我的应用程序具有以下特点:
@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
。
我该怎么做?
感谢提前。
答案 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