我在一個jar文件中有一個JPA註釋對象和一個EJB遠程接口,而注入了Entity Manager的EJB無狀態實現部署在一個war文件中。我的客戶創建了一個新的對象實例並通過電線發送。EJB 3 + JPA2 =具有空字段的反序列化對象
但是,當它在服務器端反序列化時,對象對於每個字段都爲空,並且包含其他字段,如_persistence_primaryKey
。看來,服務器實現認爲我的反序列化的對象已經管理...但它不是...我如何通過電線傳遞對象,使其反序列化正確?如果實體管理器被註釋掉,則對象反序列化就好了。
下面參見代碼例如:
Chicken.java(JPA註釋的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瓦特/ 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 E)
@ManagedBean
@SessionScoped
public ChickenClient(){
@EJB private ChickenCreatorRemote ccr;
public void makeChicken(){
Chicken chicken = new Chicken();
chicken.setName("Bob");
ccr.createChicken(chicken);
}
}
謝謝。使用bug鏈接中描述的 解決方法適用於我,但仍然允許編織進行延遲加載。 –