已加入列的JPA实体关系和条件构建器

时间:2013-06-03 10:37:36

标签: jpa jpa-2.0 criteria

我的应用程序具有以下特点:

@Entity
public class proposal implements Serializable {

@Id
@Basic(optional = false)
@NotNull
@Column(name = "F1PRP")        
private Long proposalCode;

//more fields...
}

@Entity
public class branch implements Serializable {

@EmbeddedId
protected branchPK branchpk;

//more fields..
}

@Embeddable
public class branchPK implements Serializable {

@Basic(optional = false)
@NotNull
@Column(name = "F2PRP")
private long proposalCode;

@Basic(optional = false)
@NotNull
@Column(name = "F2BRN")
private short proposalBranch;
}

每个proposal都有一个主键(proposalCode),每个提案都有多个分支值。 我不确定如何构建它们之间的关系,以便我能够为此连接列创建一个条件构建器。

我的问题是这些项目之间应该建立什么样的关系,以及如何通过加入构建标准构建器? 用户将给我一个proposalBranch的值,我只需要显示其中包含此proposalBranch的proposal

我该怎么做?

感谢提前。

1 个答案:

答案 0 :(得分:0)

对于您发布的实体,提案实体中的proposalCode与作为分支实体一部分的提案代码之间没有任何关系,因此我假设它们必须相同。

关于您所说的每个提案可以有多个分支值的关系,因此它被映射为从提案到分支的@OneToMany关系:

@Entity
public class proposal
{
    @Id
    @Column(name = "F1PRP")        
    private Long proposalCode;

    @OneToMany(mappedBy="proposal")
    private List<branch> branches;
}

@Entity
public class branch
{
    @Id
    @Column(name = "F2BRN")
    private short proposalBranch;

    @ManyToOne
    @JoinColumn(name="F2PRP")
    private proposal proposal;
}

使用该设置,条件查询应该很容易构建,其中“Root”作为提议并在分支上调用“join”。 This is a good explanation of how Criteria API works