扩展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

@MappedSuperclass

public class Test {

...

}

@Entity

public class ExtendedTest

extends Test {

...

}

以上是 扩展JPA实体以添加属性和逻辑 的全部内容, 来源链接: utcz.com/qa/422736.html

回到顶部