当前位置: 首页 > 知识库问答 >
问题:

jpa中与复合键的多对多关系

詹正浩
2023-03-14

我用复合键定义了两个实体之间的多对多关系。问题是,当我获得join对象时,它只被过滤了关系的一侧,而不是两边。

图片使问题更加清晰。这里,我要查找的是dtid=185和prid=352,但我从多对多关系中得到的是两个突出显示的行。

天丁:

@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "d", orphanRemoval = true)
private List<DP> dp = new ArrayList<DP>();
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "p")
private List<DP> dp = new ArrayList<DP>();
public class DPPK implements Serializable{

   private Integer d;

   private Integer p;
}
@IdClass(DPPK.class)
@Entity
@Table(name = "definition_property")
@NamedQueries({
    @NamedQuery(name = "DP.findAll", query = "SELECT d FROM DP d")})
public class DefinitionProperty extends AbstractEntity{

    @Id
    @JoinColumn(name = "dtid", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private D d;
    @Id
    @JoinColumn(name = "prid", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private P p;

    @Column(name = "initial_value")
    @Basic(optional = false)
    private String initialValue;

共有1个答案

范彭亮
2023-03-14

尝试使用嵌入式ID来定义复合键,然后尝试筛选出所需的值。下面是来自StackOverflow的前面一个查询,该查询详细说明了如何使用嵌入式ID--如何在JPA中创建和处理复合主键

 类似资料:
  • 我在使用JPA/Hibernate的Spring Boot中有一个多对多实体关系和一些额外属性以及一个复合键,但是实体/实体的JSON序列化会导致循环JSON,这会引发一个异常。 基本表结构如下(cols=实体/表,行=属性): 在Spring Boot中,这表示为以下关系: 其中,两个单独的实体表示为: 每当通过存储库的方法通过API获取s列表时,返回的JSON将无限期地在上递归,导致异常。实体

  • 问题内容: 我已经建立了一个简单的多对多关系帐户:Hibernate角色,但是当我在添加角色后尝试在单元测试中保存帐户时,出现UnsupportedOperationException异常: 这是怎么了 我的实体设置有问题吗?或者这是hibernate或JPA限制,迫使我将m:m关系分解为3:n关系,也为m:n关系表建模(我想避免这种情况,因为它没有任何关系)附加信息)。我已经在原型中为其他1:n

  • 我正在尝试将下表映射到JPA中。user_tax和税收以及user_tax和用户之间的关系是一对多的。它使我感到困惑,因为我有一个复合主键,我需要将外键映射到这2个键。 错误消息:< code > org . hibernate . annotation exception:mapped by引用未知的目标实体属性:entity。实体中的Tax.user_tax。UserTax.taxs 这是我的

  • 我尝试了与表结构的多对多关系 根据我的表结构,关系表有一个额外的列year。我通过定义三个实体程序、preriod\u类型、program\u period\u类型和关系来进行编码 现在的问题是,根据代码,(Program_cd,Period_type_cd)充当复合键,我不想让Program_cd、Period_type_cd、年份这三列作为主键或不作为主键。 我可以得到任何建议以及适当的代码示

  • 问题内容: 我在Java中有2个POJO类,Answer和Collaborator,具有多对多关系。 类有一套,但没有一套。我需要在Hibernate中进行的工作是找到合作者,以获得id给出的答案。 我已经使用结果转换器使用Hibernate ()进行了此操作,但是在使用时我陷入了困境,因为我没有要提供给联接的答案列表。 问题答案: 完成了,终于… 这是代码:

  • 假设我们有两个实体,Entity和Entity。有多个s。节点可以属于多个集群。因此,在