【问题标题】:JPA entities relationship and criteria builder for joined column用于连接列的 JPA 实体关系和标准构建器
【发布时间】:2013-06-03 10:37:35
【问题描述】:

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

@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 的值,我只需要显示其中包含此proposalBranch 的proposal

我该怎么做?

提前致谢。

【问题讨论】:

    标签: jpa jpa-2.0 criteria


    【解决方案1】:

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

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

    通过该设置,标准查询应该很容易构建,将“根”作为提案并在分支上调用“加入”。 This is a good explanation of how Criteria API works.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 2014-04-26
      相关资源
      最近更新 更多