【发布时间】:2018-12-04 21:37:32
【问题描述】:
我正在尝试将环境添加到我的项目中,但 MappedSuperclass 属性的可见性存在问题。结构是这样的:
父抽象类
@MappedSuperclass
abstract class Parent {
@ManyToOne
@JoinColumn(name = "joinedEntity_id")
protected JoinedEntity field;
}
使用@Audited 注解和@AuditOverride 扩展父类的两个子类具有相同的结构:
@Audited
@AuditOverride(forClass = Parent.class, isAudited = true)
class Child extends Parent {
Child{ super(...); }
}
而加入的实体是这样的:
public class JoinedEntity {
@Singular
@OneToMany(mappedBy = "field", cascade = CascadeType.ALL, orphanRemoval=true)
@LazyCollection(LazyCollectionOption.FALSE)
@AuditMappedBy(mappedBy = "field")
private List<Child> childs;
}
错误来自 JoinedEntity 类,它无法解析指向抽象类属性的 AuditMappedBy,即使我在子类中添加了 AuditOverride。这是错误:
原因:org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class] 中定义名称为“entityManagerFactory”的 bean 创建错误:调用 init方法失败;嵌套异常是 org.hibernate.MappingException:@AuditMappedBy 指向一个不存在的属性:$path.Child.field
【问题讨论】:
标签: java spring hibernate audit hibernate-envers