扩展JPA实体以添加属性和逻辑
我需要知道是否有可能通过扩展将某些属性和行为添加到某些POJO JPA实体(使用
提供程序),然后使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();
我评估的另一种可能的方法是使用复合实体扩展功能,并委派所有设置方法和获取方法,但这可能意味着需要处理大量表:
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
@MappedSuperclasspublic class Test {
...
}
@Entity
public class ExtendedTest
extends Test {
...
}
以上是 扩展JPA实体以添加属性和逻辑 的全部内容, 来源链接: utcz.com/qa/422736.html