Hibernate:在类上使用mappedBy扩展另一个注释为JoinedSubclass的类?
以下不起作用:
@Entity class Owner { @OneToMany(mappedBy="owner", cascade = {CascadeType.ALL}) protected Set getBSet() { .. } } @Entity @Inheritance(strategy=InheritanceType.JOINED) class A { @ManyToOne public Owner getOwner() { ... } } @Entity class B extends A { }
它会导致exception:org.hibernate.AnnotationException:mappedBy引用未知的目标实体属性:所有者中的B.user。
我试图避免将“owner”属性复制到B类(因此将“非规范化”并将所有者密钥复制到为实体A和B生成的两个表中)。 另外,我真的希望将A和B放在一个单独的表中,而不必使用SingleTableinheritance来使用鉴别器。
另外,我无法弄清楚如何通过在A和B之间使用@OneToOne来做类似的事情(并且没有B扩展A)。
这是一个Hibernate古怪,但它是故意的。 我有一篇博客文章 ,其中包含JOINED解决方案的背景信息,链接和解决方法。
尝试添加targetEntity = Transaction.class。 当我使用SINGLE_TABLEinheritance时,这对我有用。 我没有尝试JOIN。
@Entity class Owner { @OneToMany(mappedBy="owner", cascade = {CascadeType.ALL}, targetEntity = Transaction.class) @Where(clause = "tableType='I'") protected Set getBSet() { .. } }
我会仔细检查你的真实实现。 我使用了您的示例代码,在添加@Id后,一切都按预期工作。 甚至IntelliJ说getBSet()与B.owner相关联。
- Spring Data配置 – 找不到hibernate.properties
- hibernate oracle标识符太长ORA-00972
- 简单的hql命名查询,它使用内连接
- Hibernate throws无法删除或更新父行:外键约束失败
- 来自连接表的Hibernate 键
- 在非调试模式下,Spring @transaction在junit中没有按预期工作
- 加载spring-boot和spring-data-jpa时,Hibernate无法加载JPA 2.1 Converter
- Hibernateexception:非法尝试取消引用集合
- org.hibernate.LazyInitializationException:无法初始化代理 – 没有会话