Hibernate Criteria多个表

时间:2016-10-07 10:18:10

标签: java sql hibernate join criteria

目前我正在使用Hibernate Criteria API,我遇到了以下情况:

@Entity(name = "A")
private class A {
    @Id
    @GenericGenerator(name = "fileEntryIdGenerator", strategy = "increment")
    @GeneratedValue(generator = "fileEntryIdGenerator") 
    @Column(name = "DBID")
    private Long id;

    @Column
    private String name;
    @OneToMany(targetEntity = B.class, cascade = {CascadeType.ALL }, fetch = FetchType.LAZY)   @JoinColumn(name = "A_id")
    private Set<B> references;
    // ....
}

@Entity(name = "B") private class B{
@Id
@GenericGenerator(name = "fileEntryIdGenerator", strategy = "increment")
@GeneratedValue(generator = "fileEntryIdGenerator")
@Column(name = "DBID")
private Long id;   @Column   private String name;...}

现在,我的计划是获取所有B的列表,其中A.name =&#39; testName&#39;。 因此,我需要标准声明。

有人可以帮助我吗?!

1 个答案:

答案 0 :(得分:1)

我希望您尝试使用条件API连接两个表。请检查以下代码。

Criteria criteria = session.createCriteria(B.class, "B");
criteria.createAlias("B.A", "A", JoinType.INNER_JOIN);
criteria.add(Restrictions.eq("A.name", "name"));
criteria.list();

在上面的代码中,

第1行 - 为B类创建Criteria对象。

第二行 - 基于映射列

第3行 - 根据A中的名称列进行限制。

第4行 - 执行标准以获取列表

另外我认为可以在B级(多对一)中映射A类。