当Entity为null时,HQL Hibernate选择新的Entity()

时间:2012-02-14 18:27:33

标签: hibernate hql

好的,让我详细说明标题。假设我有一个实体,它有一个ChildEntity,两者之间有双向映射:

+--------+            +-------------+
| Entity | <--1.1---> | ChildEntity | 
+--------+            +-------------+
    |
    |            +-----------------+
    +---1..n---> | SomeOtherEntity |
                 +-----------------+

现在假设我有HQL做这样的事情:

FROM ChildEntity as ce 
LEFT JOIN ce.entity as e
LEFT JOIN e.someOtherEntities as soe
WHERE e.user = :user 
 ... (and a bunch of other conditions ) ...

那么,问题的本质是: 可能存在用户与Entity对象没有关联的情况,在那些情况下我希望能够为他创建。

我知道可以这样做:

SELECT new Entity(....) FROM .....

但是有什么方法可以做到这个条件吗?比如,if ce.entity == null then new Entity(ce), else e

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这应该在代码而不是查询中处理(甚至不知道这样做的方法)。 SELECT new Entity(....) FROM表单用于从实体的某些部分创建DTO或ViewModel,无数据操作。

results = "FROM ChildEntity as ce WHERE ce.entity = null" // get all without entity

for(childentity child : results)
{
    child.setEntity(new Entity());
}
session.Flush();
// query again with what you have