我知道这个主题在这里讨论了很多次,但我仍然坚持一个例外:外键必须与引用的主键具有相同的列数。
(我正在使用spring数据和hibernate)
我的身份证类别:
@Embeddable
public class ProxyDienstRelationPK implements Serializable{
private static final long serialVersionUID = 1L;
@Column
private String parentDienstId;
@Column
private String subDienstId;
public ProxyDienstRelationPK(){}
public ProxyDienstRelationPK(ProxyDienst parentDienst, ProxyDienst subDienst){
this.parentDienstId = parentDienst.getId();
this.subDienstId = subDienst.getId();
}
//Getter and Setter , HashCode and Equals
}
我的实体:
@Entity
public class ProxyDienstRelation {
@EmbeddedId
private ProxyDienstRelationPK pdId;
private ProxyDienst subDienst;
private ProxyDienst parentDienst;
private boolean modul;
//Getter and Setter
}
对于这种构造,我得到以下例外情况:
导致:org.hibernate.MappingException:外键(FK_ad3h9gu4labg6ix34bei3poxt:proxy_dienst_关系[parent_dienst_id,sub_dienst_id])必须与org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:110)org.hibernate.mapping.ForeignKey.alignColumns中引用的主键(proxy_dienst[id])的列数相同(ForeignKey.java:93)位于org.hibernate.cfg.Configuration.secondpasscompileforeignkey(Configuration.java:1816)位于org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1739)位于org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1424)位于org.hibernate.cfg.cfg.Configuration.buildSessionFactory(Configuration.java:1844)位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)…23更多信息
希望有人能帮忙。谢谢
@MapsId("subDienstId")
@ManyToOne
private ProxyDienst subDienst;
@MapsId("parentDienstId")
@ManyToOne
private ProxyDienst parentDienst;
在您的案例中,parentDienstId
是PK的一部分,但也扮演FK的角色。这被称为“派生身份”。在专业JPA2的书中有一个很好的章节。
我有一个实体,叫做FatRabbitCarrot: 而且很管用。现在上面的类已经替换了字段名,但是结构和我们的存储库是一样的。 然后我尝试添加一个新实体,该实体在上面的类中有一个外键。让我们把这门课叫做NutToffee。FatRabbitCarrot与这个新实体有一对一的关系,而实体本身应该有一对一的关系: 对我来说,这似乎是一个有效的类。但看起来不像。我们正在使用Java8、Hibernate
我有域类 - 用户、角色、组、组角色 用户域 用户.hbm.xml 我有user_grouprole表作为一个连接表为一个用户和一组分组程序我有user_role表作为一个连接表为一个用户和一组角色 组域 Group.hbm.xml 组角色 GroupRole.hbm.xml 当我尝试使用主类进行测试时,我得到了一个映射错误,比如Hibernate映射错误,比如外键(FK5110401A83989
问题内容: 目标:我想在ImportJob中使用importJobId作为分配表ID的外键,这样,当我们那时具有importJobId时,那么我们只能在ID中分配ID,因为没有Job时就无法进行任何分配。 ImportJob表的复合主键为[ORGID,IMPORTJOBTYPE],正在尝试使用以下方式在hibernate状态下创建外键关系: 在Allocation.hbm.xml中无法解决,并收到
嗨,下面是我的实体,它们之间有许多联系 大学生JAVA 学生详细信息。JAVA appmain.java 下面是我的2表中的列 “学生详细信息”中的“值”应输入学生表的“用户角色” 但当我执行appmain时,我的错误率就降低了 我试图解决这个问题,但它显示出同样的错误请建议我如何解决这个问题
问题内容: 目标:我想在ImportJob中使用importJobId作为分配表ID的外键,这样,当我们那时具有importJobId时,那么我们只能在ID中分配ID,因为没有Job时就无法进行任何分配。 ImportJob表的复合主键为[ORGID,IMPORTJOBTYPE],正在尝试使用以下方式在休眠状态下创建外键关系: 在Allocation.hbm.xml中无法解决,并收到以下错误消息:
我在实体和之间有多对多的关系,我使用了一个名为的关联表。 AbstractEntity.java: FunctionEntity.java: FunctionProduceResultEntity.java: ResultEntity.java 功能实用性: 启动服务器时,出现以下错误: 还有类似的问题,例如外键必须具有与多对一映射中引用的主键相同的列数,以及Hibernate MappingEx