`

hql查询表中无主键,返回结果全是一样的数据

    博客分类:
  • java
阅读更多

用hql查询view,但view中无主键,根据某列查询,返回多条记录,返回的结果记录条数正确,但数据全部重复与db查询不一致,解决方案:在映射文件.hbm.xml中定义为联合主键,即用<composite-id>

测试数据如下:

SPREAD_TABLE_CODE,PRICE_FROM,PRICE_TO,SPREAD_VAL

1	0.01	0.1	0.001
1	0.1	0.2	0.001
1	0.2	0.25	0.001
1	0.25	0.4	0.005
1	0.4	0.5	0.005

 hbm配置文件(没有使用联合主键):

<hibernate-mapping package="com.shkco.adsr3.ogadapter.framework.vo">
	<class name="OgSprd" table="VW_HKEX_SPREAD_TABLE">

		<id name="sprdTableCode" column="SPREAD_TABLE_CODE" unsaved-value="null"> 
              <generator class="assigned"/> 
         </id>
	
		<property name="priceFrom" column="PRICE_FROM"/>

		<property name="priceTo" column="PRICE_TO"/>

		<property name="sprdVal" column="SPREAD_VAL"/>
			
	</class>
</hibernate-mapping>

 hql语句

 

List sprdList = session.createQuery(

			"from OgSprd sprd where sprd.sprdTableCode = :sprdTableCode order by sprd.priceTo asc")

			.setInteger("sprdTableCode", sprdTableCode)

			.list();

 OgSprd -----》VW_HKEX_SPREAD_TABLE

 

解决方案:

<composite-id>
            <key-property name="sprdTableCode" column="SPREAD_TABLE_CODE"/>	        
            <key-property name="priceFrom" column="PRICE_FROM"/>	 
            <key-property name="priceTo" column="PRICE_TO"/>	         
</composite-id>

 

分享到:
评论

相关推荐

    hql多表查询

    在MySQL中创建`sc`表时,使用了`FOREIGN KEY`约束来定义`Sno`和`Cno`字段作为外键,引用`student`和`course`表的主键。 在数据层面,`student`和`course`表的初始数据已经在第6.1节给出,而`sc`表的数据在此处有所...

    hibernate 中HQL语句查询学习笔记

    可以在Hibernate的映射文件中定义HQL查询: ```xml SELECT s FROM Student s WHERE s.sdept = :dept ``` 这样可以直接在代码中引用这些预定义的查询。 #### HQL的嵌套子查询 子查询是在另一个查询内部的查询...

    Hibernate注解方式、HQL查询

    在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细探讨Hibernate的注解方式以及HQL(Hibernate Query Language)查询...

    hibernate复合主键配置和使用

    在代码中,我们可以像操作普通实体一样保存和查询复合主键的实体。例如,添加新记录: ```java Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); AddressId ...

    hql详细讲解,实例演示

    `&lt;query&gt;`标签定义了一个HQL查询,查询所有ID小于给定参数的`Student`对象。`&lt;![CDATA[ ... ]]&gt;`用于包裹HQL语句,防止特殊字符被解析。`&lt;filter-def&gt;`和`&lt;filter-param&gt;`定义了过滤器的参数,`myid`类型为整数。 ...

    hql基础语句

    - ** 子查询 **:可以在HQL查询中嵌套其他查询。 - ** 排序与分组 **:`order by`和`group by`语句用于排序结果和按属性分组。 - ** 扩展查询 **:如`left outer join`、`right outer join`等,实现不同类型的连接。...

    HQL学习教程Hibernate入門

    HQL(Hibernate Query Language)是Hibernate提供的一种面向对象的查询语言,与SQL类似,但更加面向对象,使得开发者在处理数据时更加便捷。 在学习HQL之前,首先需要理解Hibernate的核心概念。Hibernate通过映射...

    Hibernate HQL教程

    - **解释**: 在映射文件中定义HQL查询,便于复用和维护。 #### 1.3 HQL的嵌套子查询 ##### 1.3.1 嵌套子查询的概念 - **解释**: 子查询是在另一个查询语句内部的查询,用于增强查询的灵活性和表达能力。 ##### ...

    SSH2+JSO与三表联合主外键

    同时,Hibernate的Criteria API或HQL(Hibernate Query Language)可以帮助进行复杂的数据库查询,包括涉及多表连接的查询,这些查询可能涉及到联合主键和外键的使用。 综上所述,SSH2+JSON的结合提供了强大的后端...

    HibernateHQL级联注意事项[归类].pdf

    - 注意HQL中的关联查询可能会返回大量数据,如果不加以限制,可能会消耗大量内存和计算资源。 - 需要关注级联操作对事务的影响,特别是在多线程环境下,确保事务的正确性和数据的一致性。 6. 示例分析 文档中...

    Hibernate多表查询.txt

    例如,在示例代码中,通过`from tBookInfo book, BookSelection sel where book.id = sel.bookId`这样的HQL语句,实现了对“书籍”和“选择”两个表的联合查询,并根据主键与外键的关系进行了匹配。 #### 2. 构建...

    Hibernate复合主键.

    在编写HQL或JPA Criteria查询时,复合主键的使用方式与其他字段并无太大区别,只需要按照其结构进行匹配即可。在一对多或多对一的关系映射中,如果关联的主键是复合的,需要在`@ManyToOne`或`@OneToMany`注解中指定`...

    从任意hive单表读取并计算数据写入任意mysql单表的hive工具

    标题中的“从任意hive单表读取并计算数据写入任意mysql单表的hive工具”指的是一款专门用于数据迁移的工具,它能够帮助用户从Hive数据仓库中提取数据,进行必要的计算处理,然后将结果存储到MySQL数据库中。...

    Hive数据仓库之boss直聘平台薪资数据分析

    这一步会将HDFS上的文件数据映射到Hive的表分区中,便于后续的查询和分析。 接下来,通过编写HQL语句进行数据探索。我们可以计算薪资的平均值、中位数、标准差等统计指标,以理解整体薪资水平。此外,还可以按城市...

    管理系统系列--hive仓库元数据管理系统.zip

    6. **HQL与元数据**:HQL查询语句首先会解析元数据,然后生成执行计划。例如,JOIN操作需要查询相关表的元数据以确定如何连接它们。 7. **元数据同步**:在分布式环境中,元数据的同步至关重要。当多台机器访问同一...

    hibernate的查询学习.

    本文将重点讨论HQL在处理多对多关系映射以及多表查询中的应用。 在Hibernate中,多对多关系通过`&lt;many-to-many&gt;`标签来定义。当两个实体之间存在多对多关联时,通常需要一个额外的中间表来存储这两个实体的关联关系...

    HibernateAPI

    而投影(Projection)则用于定义查询结果的返回形式,如`Projections.count("id")`返回指定字段的数量。 9. **Query对象与命名查询** `Query`接口提供了执行HQL和SQL的能力,支持设置参数、分页、排序等功能。命名...

    hibernate主键一对一关联映射代码示例

    共享主键方式更为简洁,是两个表的主键相同,这里我们将主要讨论这种实现方式。 首先,我们需要定义两个实体类,例如`Person`和`Address`,它们之间存在一对一的关系。在`Person`类中,我们将包含一个`Address`类型...

Global site tag (gtag.js) - Google Analytics