【问题标题】:Hibernate Criteria Restriction field naming confusionHibernate Criteria Restriction 字段命名混淆
【发布时间】:2014-06-21 17:33:15
【问题描述】:

当我们应用条件时,我对 Hibernate 上的条件限制字段命名感到困惑。我有一个名为“用户”的数据库表,它包含一个名为“status_id”的字段。我已经使用 eclipse hibernate 工具来生成 POJO,它创建了 User 类,并且该类中的属性名称是“statusId”,它没有“_ " 符号。

现在我想知道在下面的代码中,我必须为限制条件使用哪个名称。

Criteria criteria = session.createCriteria(User.class)
                 .add(Restrictions.eq(<column to check>, new Int(1)));

我的困惑是是否使用列中的“status_id”或“statusId”来检查条件。我搜索了解释,找不到类似的问题。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: java mysql hibernate hibernate-criteria


    【解决方案1】:
    @Column(name = "DEPT_NAME", length = 100)
    
    private String DEPTNAME;
    

    这里DEPT_NAME应该是在使用native sql

    时使用的

    DEPTNAME 在使用 HQL 时和在 criteria 期间使用。

    【讨论】:

      【解决方案2】:

      您使用 bean 属性名称。如果您的列是 status_id 并且您的类中有 int statusId,则条件的属性名称是 bean 属性的名称:statusId

      这会生成 SQL,并会确定您的查询需要 status_id

      http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/criterion/Restrictions.html

      【讨论】:

        【解决方案3】:

        使用 statusId。除非您尝试编写 SQL,否则您始终使用映射 POJOS 中的字段名称而不是表列名称。

        【讨论】:

          猜你喜欢
          • 2014-09-16
          • 2022-06-17
          • 1970-01-01
          • 2012-09-06
          • 1970-01-01
          • 2013-07-24
          • 2015-01-17
          • 2012-03-29
          • 2014-04-14
          相关资源
          最近更新 更多