我在一个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链接中描述的 解决方法适用于我,但仍然允许编织进行延迟加载。 –