我看到了很多关于这个问题的帖子,但是我找到的许多答案是使用@MappedSuperclass注释,在我的例子中,它破坏了我所做的模块化设计。
假设您有两个类,一个是实体类,另一个是非实体类的另一个模块:
模块M:
@Entity
public class A {
//Properties
}模块M':
public class SuperA {
String name;
String age;
//getters and setters
}我希望重用SuperA的属性,以便映射到A实体中。但我不想让模块M‘,也不想让类SuperA知道持久化知识(例如,避免@MappedSuperclass注释)。
我该如何处理这个问题?我考虑了A类的适配器模式,但我不确定.
发布于 2019-08-17 14:14:01
我可以看到两种选择:
1)必须添加一个基于XML的Hibernate配置,作为整个持久性单元的一部分。考虑到避免模块M中的任何其他改动:
<component name = "SuperA">
// properties
</component>在这里,您将SuperA类注册为一个可嵌入的类。
2)在第一个模块中扩展SuperA并将该类标记为@Embeddable。然后,在每个需要它的实体中,只需创建一个字段并使用@Embedded对其进行注释。
https://stackoverflow.com/questions/57536887
复制相似问题