M31*_*314 4 hibernate hibernate-criteria
我必须在特定字段myProperity上创建创建标准或标准(在类MyClass上).我必须选择prop = null或满足特定条件的所有对象.所以我应该做类似的事情:
Criteria criteria = this.sessionManager.getCurrentSession().createCriteria(MyClass.class);
specificCriteria = criteria.createCriteria('myProperity');
/* definition of specificCriteria */
Disjunction disjunction = Restrictions.disjunction();
disjunction.add(Restrictions.isNull('myProperity'));
disjunction.add(specificCriteria);
criteria.add(disjunction);
Run Code Online (Sandbox Code Playgroud)
问题是由事实造成的:
你有什么想法如何处理它?
Yog*_*ati 10
你可以在这里得到所有问题的答案,这将对你有所帮助
如果你的MyClass喜欢的话
class MyClass{
private long id;
private String myProperity;
.
.
.
setter & getter
}
Run Code Online (Sandbox Code Playgroud)
在这里你null问题解决了,这将与其他标准.
Criteria criteria = session.createCriteria(MyClass.class);
Disjunction disjunction = Restrictions.disjunction();
disjunction.add(Restrictions.isNull("myProperity"));
criteria.add(disjunction);
criteria.add(Restrictions.eq("id", value));
Run Code Online (Sandbox Code Playgroud)
小智 7
只为其他人提出这个问题.我有一个类似的问题,我想检查关联的集合是否为空,如果不是由ID限制.为了实现这一点,以下帮助我(更新版本的hibernate的更新代码):
Criteria criteria = getSession().createCriteria(StaffMember.class);
criteria.createAlias("franchises", "franchises", JoinType.LEFT_OUTER_JOIN)
.add(Restrictions.or(
Restrictions.isEmpty("franchises"),
Restrictions.in("franchises.id", allowedFranchises)));
Run Code Online (Sandbox Code Playgroud)
所以这允许以下内容:
这样的事情对我有帮助:
final Criteria c = session.createCriteria(House.class)
// Houses may not have doors.
.createAlias("door", "door", CriteriaSpecification.LEFT_JOIN)
// Door may be null, but if it isn't it must be blue.
.add(Restrictions.or(Restrictions.isNull("door"), Restrictions.eq("door.color", "blue")));
Run Code Online (Sandbox Code Playgroud)
这个答案对我有帮助:https : //stackoverflow.com/a/2208458
| 归档时间: |
|
| 查看次数: |
34089 次 |
| 最近记录: |