我有一个一对多关系的2个类和一个有点奇怪的HQL查询.即使我已经阅读了一些已经发布的问题,但我似乎并不清楚.
Class Department{
@OneToMany(fetch=FetchType.EAGER, mappedBy="department")
Set<Employee> employees;
}
Class Employee{
@ManyToOne
@JoinColumn(name="id_department")
Department department;
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下查询时,我得到重复的Department对象:
session.createQuery("select dep from Department as dep left join dep.employees");
因此,我必须使用不同的:
session.createQuery("select distinct dep from Department as dep left join dep.employees");
这种行为是预期的吗?我认为这与SQL有所不同.
我有一个由以下映射的关联:
@Entity
public class Parent
{
...
@Id
@Column(name = "parent_id")
private Long id;
@OneToMany(mappedBy = "parent")
@OrderBy("id")
private List<Child> children;
...
}
@Entity
public class Child
{
...
@Id
@Column(name = "child_id")
private Long id;
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "parent_id")
private Parent parent;
@Column
private Boolean enabled;
...
}
Run Code Online (Sandbox Code Playgroud)
我想使用Criteria API返回Parent包含一个或多个Child具有该属性的实体的所有实体的列表enabled=false.我不希望children查询过滤映射的集合.
例如,给出以下内容:
Parent A
- Child A enabled=true
- Child B enabled=false
Parent B
- Child A enabled=false
- …Run Code Online (Sandbox Code Playgroud)