我需要知道是否可以通过扩展将一些属性和行为添加到某些 POJO JPA 实体(使用 hibernate 提供程序),然后使 entityManager 返回扩展对象而不仅仅是 pojo实体,如以下示例:
POJO JPA 实体类
@Entity
@Table("test")
public class Test implements Serializable {
}
扩展类
public class ExtendedTest extends Test {
...
}
获取扩展类的对象
List<ExtendedTest> extendedList = entityManager.createNamedQuery("ExtendedTest.findByFoo").setParameter("foo", "bar").getResultList();
我正在评估的另一种可能的方式是使用复合实体扩展功能并委托(delegate)所有 setter 和 getter,但这可能意味着需要大量工作才能处理巨大的表:
public class ExtendedTest2 {
private Test test;
public ExtendedTest2(Test test) {
this.test = test;
}
public getFoo() {
return test.getFoo();
}
public getBar() {
return test.getBar();
}
...
}
如有任何建议,我们将不胜感激。
最佳答案
使用@Inheritance
@Entity
@Table(name="TEST")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Test {
...
}
@Entity
public class ExtendedTest
extends Test {
...
}
或@MappedSuperclass
@MappedSuperclass
public class Test {
...
}
@Entity
public class ExtendedTest
extends Test {
...
}
关于java - 扩展 JPA 实体以添加属性和逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12570251/