条件查询无法获取数据
Criteria Query unable to fetch Data
我的数据库视图有一个 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
可以是空值。
我编写了一个条件查询来获取基于 CODE
和 ID
的结果
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]
此外,当我放置一个记录器来检查查询和值时,它 returns 2 行但在 null
的 DESC 列中断
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 中断?
谢谢
In the above view, the column DESC can be a null value.
根据Hibernate documentation,主键必须不为空:
The values cannot be null. For composite ids, no part can be null.
我的数据库视图有一个 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
可以是空值。
我编写了一个条件查询来获取基于 CODE
和 ID
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]
此外,当我放置一个记录器来检查查询和值时,它 returns 2 行但在 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 中断?
谢谢
In the above view, the column DESC can be a null value.
根据Hibernate documentation,主键必须不为空:
The values cannot be null. For composite ids, no part can be null.