【问题标题】:Criteria Query unable to fetch Data条件查询无法获取数据
【发布时间】:2017-06-07 12:02:37
【问题描述】:

我的数据库视图有一个 hbm 文件,其中所有列都作为复合键

    <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="false">
    <class name="com.sample.dataobject.MyView"
        table="MY_VIEW" >
        <composite-id>
            <key-property name="code" type="string">
                <column name="CODE" length="2" />
            </key-property>
            <key-property name="Id" type="string">
                <column name="ID" length="14" />
            </key-property>
            <key-property name="Desc" type="string">
                <column name="DESC" length="256" />
            </key-property>
            <key-property name="TypeCode" type="string">
                <column name="TYPE_CODE" length="2" />
            </key-property>
        </composite-id>
    </class>
</hibernate-mapping>

在上面的视图中,DESC 列可以为空值。

我编写了一个条件查询来获取基于 CODEID 的结果

Criteria c = getSession().createCriteria(MyView.class);
    c.add(Restrictions.eq("code", 'US'));
    c.add(Restrictions.eq("Id", '12'));
    List<MyView> annuityServices= c.list();

View中有2行满足这些条件,但是返回的List是[null,null]

此外,当我放置一个记录器来检查查询和值时,它返回 2 行但在 DESC 列中断,即 null

    2017-06-07 17:08:19 TRACE BasicExtractor:78 - extracted value ([CODE_1_390_0_] : [VARCHAR]) - [US]
2017-06-07 17:08:19 TRACE BasicExtractor:78 - extracted value ([ID_2_390_0_] : [VARCHAR]) - [12]
2017-06-07 17:08:19 TRACE BasicExtractor:68 - extracted value ([DESC_9_390_0_] : [VARCHAR]) - [null]
2017-06-07 17:08:19 TRACE BasicExtractor:78 - extracted value ([CODE_1_390_0_] : [VARCHAR]) - [US]
2017-06-07 17:08:19 TRACE BasicExtractor:78 - extracted value ([ID_2_390_0_] : [VARCHAR]) - [12]
2017-06-07 17:08:19 TRACE BasicExtractor:68 - extracted value ([DESC_9_390_0_] : [VARCHAR]) - [null]

遇到null 值时是否有问题或标准 API 中断?

谢谢

【问题讨论】:

    标签: hibernate criteria hibernate-criteria


    【解决方案1】:

    在上面的视图中,列 DESC 可以是空值。

    根据Hibernate documentation,主键必须是not null

    值不能为空。对于复合 id,任何部分都不能为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 2018-12-31
      • 2019-02-06
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      相关资源
      最近更新 更多