好的,让我详细说明标题。假设我有一个实体,它有一个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
感谢任何帮助。
答案 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