java - Hibernate加载同一行

标签 java hibernate hql

我有一张 table

canvastowidgets
{
    idCanvas int PK
    idWidgets int PK
    version varchar
    sequence int
    position int
    inPanelOrNot int
}

映射 xml 如下

<hibernate-mapping>
    <class name="com.config.canvas.CanvasHasWidget" table="canvastowidgets">
        <id name="canvasId" type="int">
            <column name="idCanvas" />
            <generator class="assigned" />
        </id>
        <property name="widgetId" type="int">
            <column name="idWidgets" />
        </property>
        <property name="sequence" type="int">
            <column name="sequence" />
        </property>
        <property name="position" type="int">
            <column name="position" />
        </property>
        <property name="inPanel" type="boolean">
            <column name="inPanelOrNot" />
        </property>
    </class>
</hibernate-mapping>

当我执行如下查询时

Query query = session.createQuery("from CanvasHasWidget where idCanvas = :id");
        query.setParameter("id",canvas.getCanvasId());
        return query.list();

查询是

select canvashasw0_.idCanvas as idCanvas1_2_, canvashasw0_.idWidgets as idWidget2_2_, canvashasw0_.sequence as sequence3_2_, canvashasw0_.position as position4_2_, canvashasw0_.inPanelOrNot as inPanelO5_2_ from canvastowidgets canvashasw0_ where idCanvas=?

07:38:16,822 TRACE BasicBinder:81 - binding parameter [1] as [INTEGER] - [1]
07:38:16,829 TRACE BasicExtractor:78 - extracted value ([idCanvas1_2_] : [INTEGER]) - [1] 07:38:16,835 TRACE BasicExtractor:78 - extracted value ([idCanvas1_2_] : [INTEGER]) - [1] 07:38:16,840 TRACE BasicExtractor:78 - extracted value ([idCanvas1_2_] : [INTEGER]) - [1]

列表返回 3 行,其中表中有 3 行。但返回的所有 3 行都是相同的。

最佳答案

问题是您的表有一个复合主键,如下所示:

idCanvas int PK
idWidgets int PK

但您只映射了其中之一。更改您的映射并将 id 部分替换为

<composite-id>
    <key-property name="idCanvas"/>
    <key-property name="idWidgets"/>
</composite-id>

关于java - Hibernate加载同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23851409/

相关文章:

java - 将麦克风输入转换为键盘输入

java - 如何使用hibernate在spring mvc中将userid从一个表传递到另一个表

mysql - Hibernate HQL 中的通用日期格式函数

sql - 配置单元:无法从配置单元表中的文件插入数组和映射

java - 如何在HQL中转义关键字 "on"

Centos 5 中 Java 服务器启动时挂起

java - 对 hazelcast ISet 和 IList 的支持即将上线

java - (Android) 通过一个简单的套接字攻击服务器

java - Hibernate PropertyAccessException : IllegalArgumentException

xml - 正则表达式过滤器 log4j2