Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ejb3+;JPA2=具有空字段的反序列化对象_Java_Persistence_Ejb 3.0_Jpa 2.0_Entitymanager - Fatal编程技术网

Java ejb3+;JPA2=具有空字段的反序列化对象

Java ejb3+;JPA2=具有空字段的反序列化对象,java,persistence,ejb-3.0,jpa-2.0,entitymanager,Java,Persistence,Ejb 3.0,Jpa 2.0,Entitymanager,我在一个jar中有一个JPA注释对象和一个EJB远程接口,在war文件中部署了带有实体管理器的EJB无状态实现。我的客户机创建了一个新的对象实例,并通过网络发送它 但是,当在服务器端对其进行反序列化时,对象的每个字段都为null,并且包含其他字段,如\u persistence\u primaryKey。似乎服务器实现认为我的反序列化对象已经被管理了…但它不是…我如何通过连接传递对象,使其正确反序列化?如果实体管理器被注释掉,对象反序列化就很好了 请参见下面的代码示例: Chicken.java

我在一个jar中有一个JPA注释对象和一个EJB远程接口,在war文件中部署了带有实体管理器的EJB无状态实现。我的客户机创建了一个新的对象实例,并通过网络发送它

但是,当在服务器端对其进行反序列化时,对象的每个字段都为null,并且包含其他字段,如
\u persistence\u 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 w/JPA注入)

ChickenClient.java(带有注入远程EJB接口的JSF UI)


您的问题可能来自此问题

我在Glassfish 3.1.1中也遇到了同样的问题,分别使用了
EAR和WAR

persistence.xml中的此属性解决了我的问题:

<property name="eclipselink.weaving" value="false"/>
谢谢使用bug链接中描述的解决方法对我来说很有效,同时仍然允许延迟加载的编织。
@ManagedBean
@SessionScoped
public ChickenClient(){

    @EJB private ChickenCreatorRemote ccr;

    public void makeChicken(){
       Chicken chicken = new Chicken();
       chicken.setName("Bob");
       ccr.createChicken(chicken);
    }   
}
<property name="eclipselink.weaving" value="false"/>