java – hibernate OneToMany标准返回重复项
发布时间:2020-05-24 12:31:53 所属栏目:Java 来源:互联网
导读:我有一个由以下映射的关联: @Entitypublic class Parent{... @Id @Column(name = parent_id) private Long id; @OneToMany(mappedBy = parent) @OrderBy(id) private ListChild children;.
|
我有一个由以下映射的关联: @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;
...
}
我想使用Criteria API返回包含一个或多个具有属性enabled = false的子实体的所有Parent实体的列表.我不希望查询过滤映射的子集合. 例如,给出以下内容: Parent A
- Child A enabled=true
- Child B enabled=false
Parent B
- Child A enabled=false
- Child B enabled=false
Parent C
- Child A enabled=true
- Child B enabled=true
该查询应返回以下内容: Parent A
- Child A enabled=true
- Child B enabled=false
Parent B
- Child A enabled=false
- Child B enabled=false
到目前为止,我使用以下Criteria查询: Criteria crit = session.createCriteria(Parent.class);
crit.createCriteria("children").add(Restrictions.eq("enabled",false));
List<Parent> result = crit.list();
return result;
然而,它返回相当于 Parent A
- Child A enabled=true
- Child B enabled=false
Parent B
- Child A enabled=false
- Child B enabled=false
Parent B
- Child A enabled=false
- Child B enabled=false
即,它为每个子元素返回单个父记录(填充子集合),其中enabled = false 有谁知道如何在这种情况下只返回唯一的父元素? 建议表示赞赏,p. 解决方法你需要添加一个不同的,例如criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 应该适合你的情况 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
