我必须将JPA实体对象处理为带注释的JAXB对象,反之亦然。
两个类类型如下所示:
@Entity
public Entity{
private String fieldA;
private int fieldB;
private Entity2 fieldC;
// + Getters and Setters
}
@RootElement
public JAXBEntity (extends AbstractJAXBEntity<Entity>){
private String fieldA;
private int fieldB;
private String fieldC;
// + Getters and Setters
public JAXBEntity(Entity entity) {...}
public Entity getEntity() {...}
}
我需要的方法是:Entity <-> JAXBEntity, List<Entity> <-> List<JAXBEntity>
我有很多这样的类对,所以我正在寻找一种非常通用的解决方案,每对最少的单独实现。如果我需要在每对constructor
中仅实现getEntity
和JAXBEntity
,那么最佳情况就是。
我想到了以下类结构:
public abstract class AbstractJAXBEntity<Entity>
@Stateless
public EntityConversation <JAXBEntity extends AbstractJAXBEntity>
我的想法是,我可以在JAXBEntity
的实例中获取EntityConversation
的泛型类型,然后是Entity
的类型。当我有类型时,我可以通过Reflections轻松创建对象。
但由于type-erasure,这有点复杂。
另外EntityConversation
只能使用无参数构造函数。否则我将无法用@EJB
注入它。
这种做法是否切合实际,您是否认为我可以获得任何类型的方法?或者有没有其他方法可以做到这一点,我没有看到?