[英]EJB 3 + JPA2 = Deserialized Object with null fields
我在一個jar中有一個JPA Annotated Object和一個EJB遠程接口,並且在war文件中注入了Entity Manager注入的EJB Stateless實現。 我的客戶端創建了一個新的對象實例並通過網絡發送它。
但是,當它在服務器端反序列化時,對象對每個字段都為null,而且包含其他字段,如_persistence_primaryKey
。 似乎服務器實現認為我的反序列化對象已經被管理了......但它不是......我如何通過線傳遞對象以便正確反序列化? 如果實體管理器被注釋掉,則對象反序列化就好了。
請參閱下面的代碼示例:
Chicken.java(JPA Annotated POJO)
@Entity
@Table(name="Chicken")
public class Chicken implements Serializable{
/**
*serial version id
*/
private static final long serialVersionUID = 1L;
@Id
@Column(name="ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name="NAME")
private String name;
public Chicken(){
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
ChickenCreator.java(無狀態EJB w / JPA注入)
@Stateless
public class ChickenCreator implements ChickenCreatorRemote{
@PersistenceContext(unitName="DataStore") private EntityManager em;
public ChickenCreator(){
}
public createChicken(Chicken chicken){
em.persist(chicken);
}
}
ChickenClient.java(帶注入遠程EJB接口的JSF UI)
@ManagedBean
@SessionScoped
public ChickenClient(){
@EJB private ChickenCreatorRemote ccr;
public void makeChicken(){
Chicken chicken = new Chicken();
chicken.setName("Bob");
ccr.createChicken(chicken);
}
}
您的問題可能來自此問題http://java.net/jira/browse/GLASSFISH-16164
我在Glassfish 3.1.1中使用單獨的EAR and WAR
也遇到了同樣的問題。
persistence.xml中的這個屬性解決了我的問題:
<property name="eclipselink.weaving" value="false"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.