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

复合\外键的JPA实体中的RepeatedColumnException

苍宝
2023-03-14

我在表EmployeeCode的两列上有一个主键

主键(ecode,eid)

@EmbeddedId
private EmployeeCodePK id;
@Column(name="ECODE")
private long ecode;

@Column(name="EID")
private long eid;

列eid是一个外键,它引用表Employee并具有ManytoOne映射,我已经在EmployeeCode.java中声明了如下内容

@ManyToOne
@JoinColumn(name="EID")
private Employee employee;

当我这样做时,我得到以下异常,因为我在这两个位置都使用了EID(因为它是另一个表的外键,也是复合主键的一部分)

org.hibernate.MappingException: Repeated column in mapping for entity: com.skyteam.api.lounges.domain.persistence.entities.LoungeFacility column: LOUNGE_ID (should be mapped with insert="false" update="false")
    at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:682)
    at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:704)
    at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:726)
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:479)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:270)

我怎么能在两个地方都用同一个名字呢?

共有1个答案

封瑞
2023-03-14

如下所示修改@JoinColumn对我有效

@JoinColumn(name="EID", referencedColumnName = "EID",insertable = false, updatable = false)
 类似资料:
  • 我有一个实体,它的复合主键由两个字段组成,其中一个也是复合外键的一部分。 背景:我有实体<代码>人员 、<代码>区域 和<代码>会话 。 与具有多对多关系,使用称为“和实体。 所以,我有,主键为(,)。本身是的外键。 也有一个字段。我希望(,)是的复合外键。 我的PersonSession代码: } 这看起来不错,它在数据库中创建了所有正确的关系。当我尝试插入个性化会话对象时,问题就出现了——ar

  • 异常[EclipseLink-48](Eclipse Persistence Services-2.3.2.v20111125-r10461):org.Eclipse.Persistence.exceptions.Description异常描述:字段[flight.connid]存在多个可写映射。只有一个可以定义为可写,所有其他的都必须指定为只读。映射:org.eclipse.persistenc

  • 在一个双向关系中,我不能将子外键与父外键相关联。我有一个父类联盟是这样定义的: 子类ServiceCharge是这样定义的: 然后运行测试代码: 正如您所看到的,在将Union u持久化到数据库之后,我将这两个实体与一个控制器相关联,ServiceController.Add只是通过使用Union setter将实体charge1添加到servicecharges列表中,然后将该实体持久化到数据库

  • EmbeddedId或IdClass注释用于表示复合主键。如何在没有(EmbeddedId或IdClass)的情况下使用复合主键? 如果可以在没有(EmbeddedId或IdClass)的情况下使用复合主键,那么如何使用EntityManager.find(Entity Class,Object primaryKey)方法在复合主键(Multiple primaryKey)的情况下查找实体(因为没

  • 我有以下表格,如何将它们映射到JPA实体: 事件表与会议表具有一对多的关系。我如何在JPA中映射这种双向关系?

  • 问题内容: 我在为某些实体设置jpa映射时遇到麻烦。我有一个如下定义的父实体。 然后,我有一个带有复合键的子实体,以及此表的主键的外键,如下所示: 我知道子实体不正确,但是我不确定如何将其设置为具有复合PK。我知道我需要设置一个PK类,但是当一个字段是父类的外键时,我不确定该怎么做。一旦设置好,父级将如何引用子级实体? 任何帮助表示赞赏。 问题答案: 这受JPA 2规范的 第2.4.1节“与派生身