我有一个JPA项目(Eclipse链接),工作正常,但我想保留一个不是Entity(或在同一Persistence Context中不是Not实体)的类,当前我保留了引用ID,然后我进行了调用以检索物体。我需要知道什么是最好的方法。.我不想在bean中添加代码作为侦听器事件,因为我想要一个干净的bean(constructos,properties,setter和getters不带注释),
我的想法是扩展PersistenceContext(但是,我不知道该怎么做),添加一个过滤器并确定要持久化的类,并做一些事情来替换未映射类的持久性。
有什么想法或我的问题不合适吗?
这是一个简单的例子。
@Entity
public class Customer{
@Column
Integer id;
@Column
/*transient?*/
CustomerInfo customerInfo
/*setters and getters*/
}
/*this class maybe not be Entity.. Maybe be a Web Service Response Bean*/
public class CustomerInfo{
private String firstName;
private String lastName;
private BigDecimal balance;
/*setters and getters*/
}
最佳答案
按照我的评论:使用基本信息创建可嵌入的CustomerInfoKey
。
然后有两个解决方案:
遗产:
让CustomerInfo
继承CustomerInfoKey
将setCustomerInfoKey(customerInfo)
与customerInfo
和CustomerInfo
一起使用。
组成和授权:
在CustomerInfoKey key
中有一个字段CustomerInfo
在CustomerInfoKey
中委托CustomerInfo
的获取者/设置者:
public Foobar getFoobar() {return key.getFoobar()}
public void setFoobar(Foobar foobar) {key.setFoobar(key);}
有一个方法getKey()并用它来保存数据;您甚至可以创建一个setter,并在
CustomerInfo
中使用Customer
并执行适当的操作。我不知道JPA实现在遇到像解决方案#1这样的部分映射时的行为。但它应该起作用。