我有一个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)customerInfoCustomerInfo一起使用。

组成和授权:


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这样的部分映射时的行为。但它应该起作用。

10-07 14:26