【发布时间】:2013-02-01 15:59:06
【问题描述】:
我正在尝试使用 HQL 创建简单的选择查询。 有一个实体将在查询中使用。如下所示:
@Entity
@Table(name = "my_table")
public class MyTable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "test_id")
private Long testId;
@Column(name = "parent_id")
private Long parentId;
@OneToMany(mappedBy = "parentId",
fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
private Set<MyTable> children = new HashSet<MyTable>();
//getters and setters
}
层次结构很简单。有父母(其 parent_id 值为空)和他们的孩子。所以只有两个级别。
我想创建选择所有父母及其子女的查询,但对于子女有一个条件:它应该等于特定的 test_id。例如。只有 test_id = 1 的孩子才需要。表由 Parent1 和 Child1 (test_id = 2) 和 Parent2 和 Child2 (test_id = 1) 组成。查询结果应该是 Parent1 没有孩子,Parent2 有 Child2。
查询:
from MyTable as myTable left fetch join myTable.children as child
where child.testId = 1
因此 - 我只得到那些有 "1" test_id 孩子的父母。但即使没有需要的孩子,我也需要所有的父母看看。 这里有什么问题:映射或查询?它实际上应该是怎样的?
提前致谢。
【问题讨论】:
标签: java hql hibernate-annotations