Hibernate:注释异常:未知的mappedBy位于。。。反向(mappedBy)双向@OneToOne关联上引用的属性未知
我有以下简单的设计:Hibernate:注释异常:未知的mappedBy位于。。。反向(mappedBy)双向@OneToOne关联上引用的属性未知,hibernate,jpa,mapping,one-to-one,bidirectional,Hibernate,Jpa,Mapping,One To One,Bidirectional,我有以下简单的设计: (来源:) 这基本上是JPA不支持的非不相交继承的解决方法。人可以自己存在,但也可以选择单个球员实体、单个教练实体或两个实体来完成逻辑 以下是易于理解的JPA2.0映射(请注意@Id转发关联): 球员和教练实体类几乎相同 这里的问题是两个双向关联(mappedBy)。这些映射与EclipseLink完美配合,但Hibernate却以某种方式与AnnotationException发生冲突: Exception in thread "main" java
(来源:) 这基本上是JPA不支持的非不相交继承的解决方法。人可以自己存在,但也可以选择单个球员实体、单个教练实体或两个实体来完成逻辑 以下是易于理解的JPA2.0映射(请注意@Id转发关联): 球员和教练实体类几乎相同 这里的问题是两个双向关联(mappedBy)。这些映射与EclipseLink完美配合,但Hibernate却以某种方式与AnnotationException发生冲突:
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: persons] Unable to configure EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:374)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
at tld.persons.Main.main(Main.java:32)
Caused by: org.hibernate.AnnotationException: Unknown mappedBy in: tld.persons.model.Person.coach, referenced property unknown: tld.persons.model.Coach.person
at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:159)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1686)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1393)
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1345)
at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1477)
at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1096)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:278)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:362)
... 4 more
当切换到旧式JPA1.0映射时,所有映射都会再次正常运行。Hibernate似乎在上述映射方面存在问题
我看过很多其他的问题报告,事实上hibernate.org上的论坛上充斥着类似的未解决问题,但我找不到任何线索来解释为什么会出现异常
在我看来,这似乎是一个冬眠虫。有人能证实这一点吗?(注意我使用的是Hibernate 3.6)可怕的错误。正如我所说,EclipseLink没有问题。在此处查看错误报告(并投赞成票):
如果我们忘记在persistence.xml中声明实体类,可能会遇到这个问题。请确保注释类中的引用属性名称和setter-getter方法名称应该相同 例如: 我有两个班级的猫和狗有一对一的关系 猫课
class Cat {
private Dog doggy;
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
public Dog getdoggy() {
return this.doggy;
}
public void setdoggy(Dog doggy) {
this.doggy= doggy;
}
}
in Dog class
class Dog {
private Cat cat;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "doggy")
public Cat getCat() {
return this.cat;
}
public void setCat(Cat cat) {
this.cat= cat;
}
}
有同样的问题。谢谢
class Cat {
private Dog doggy;
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
public Dog getdoggy() {
return this.doggy;
}
public void setdoggy(Dog doggy) {
this.doggy= doggy;
}
}
in Dog class
class Dog {
private Cat cat;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "doggy")
public Cat getCat() {
return this.cat;
}
public void setCat(Cat cat) {
this.cat= cat;
}
}