java - Hibernate Criteria 返回重复条目(无连接)

标签 java mysql hibernate hibernate-criteria sessionfactory

    Criteria cr = session.createCriteria(ProductId.class);

    List<ProductId> policyCount2 = cr.list();
    System.out.println(policyCount2.size());

    for(ProductId x : policyCount2) {
        System.out.println(x.getPRODUCT_TEMPLATE_ID());
    }

表中有 8 个 ProductId 行.... Hibernate 能够找到 8 个记录。但是,它会返回相同的产品模板 8 次……就像这样……

1
1
1
1
1
1
1
1

这是从表 ProductId 中直接选择的。该程序不涉及 JOINS。

这里是ProductId模板表

PRODUCT_ID  PRODUCT_TEMPLATE_ID
FDC140012   1
FDC140012   2
FDC140012   3
FDH140012   5
FDH140012   6
FDH140012   12
FDH140012   10
FDH140012   11

这是 ProductId POJO...

public class ProductId {

private String PRODUCT_ID;
private int PRODUCT_TEMPLATE_ID;



public String getPRODUCT_ID() {
    return PRODUCT_ID;
}
public void setPRODUCT_ID(String pRODUCT_ID) {
    PRODUCT_ID = pRODUCT_ID;
}
public int getPRODUCT_TEMPLATE_ID() {
    return PRODUCT_TEMPLATE_ID;
}
public void setPRODUCT_TEMPLATE_ID(int pRODUCT_TEMPLATE_ID) {
    PRODUCT_TEMPLATE_ID = pRODUCT_TEMPLATE_ID;
}
public String getSTATE_LIST() {
    return STATE_LIST;
}
public void setSTATE_LIST(String sTATE_LIST) {
    STATE_LIST = sTATE_LIST;
}
}

这是我的映射文件....

<hibernate-mapping>
    <class name="model.ProductId" table="PRODUCT_ID">
        <id name="PRODUCT_ID" type="java.lang.String">
            <column name="PRODUCT_ID" />
            <generator class="assigned" />
        </id>
        <property name="PRODUCT_TEMPLATE_ID" type="int">
            <column name="PRODUCT_TEMPLATE_ID" />
        </property>
        <property name="STATE_LIST" type="java.lang.String">
            <column name="STATE_LIST" />
        </property>
    </class>
</hibernate-mapping>

最佳答案

原因是您没有唯一的 ID。所有 ProductId 都将 FDC140012 作为 id

这意味着您只有一列 PRODUCT_ID 作为 id

<id name="PRODUCT_ID" type="java.lang.String">
  <column name="PRODUCT_ID" />
  <generator class="assigned" />
</id>

Hibernate 从缓存中获取所有其他对象。

关于java - Hibernate Criteria 返回重复条目(无连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36203287/

相关文章:

php - pdoException不输出错误

java - Hibernate 无参数构造函数

java - Hibernate 标准 aPI 多选

java - 配置中的映射元素未指定属性 当我尝试在 Hibernate 中运行我的项目时发生错误

java - 使用 java 发送每封电子邮件的日历邀请

mysql - Ruby On Rails 检索 mysql 数据库数据 'a' 不同的 'b'

java - 简单的按键监听器 - java

mysql - 查询优化以查找随机样本

java - 在 ArrayList Java 中操作字符串

java - 在 Java 中以两种方式向日期添加一个月会给出两种不同的结果(闰年哲学?)