0

我的应用程序有这些实体:

@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) ,每个提案可以有多个分支值。我不确定如何建立它们之间的关系,以便能够为此连接列创建标准构建器。

我的问题是这些实体之间应该有什么关系,以及如何使用 join 构建标准构建器?用户会给我一个值proposalBranch,我只需要显示proposal其中包含此 proposalBranch 的 's。

我怎么做?

提前致谢。

4

1 回答 1

0

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

关于您所说的每个提案可以有多个分支值的关系,因此从提案到分支映射为@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;
}

通过该设置,标准查询应该很容易构建,将“根”作为提议并在分支上调用“加入”。这是对 Criteria API 工作原理的一个很好的解释

于 2013-06-05T21:57:11.013 回答