EJB 3 + JPA2 = десериализованный объект с нулевыми полями - PullRequest
3 голосов
/ 06 октября 2011

У меня есть JPA Annotated Object и удаленный интерфейс EJB в одном банке, а также реализация EJB без сохранения состояния с внедренным Entity Manager, развернутым в файле войны.Мой клиент создает новый экземпляр объекта и отправляет его по проводам.

Однако, когда он десериализован на стороне сервера, объект имеет нулевое значение для каждого поля, плюс он содержит другие поля, такие как _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 без сохранения состояния)с JPA-инъекцией)

@Stateless
public class ChickenCreator implements ChickenCreatorRemote{

  @PersistenceContext(unitName="DataStore") private EntityManager em;

  public ChickenCreator(){
  }

  public createChicken(Chicken chicken){
     em.persist(chicken);
  }

} 

ChickenClient.java (пользовательский интерфейс JSF с внедренным интерфейсом удаленного EJB)

@ManagedBean
@SessionScoped
public ChickenClient(){

    @EJB private ChickenCreatorRemote ccr;

    public void makeChicken(){
       Chicken chicken = new Chicken();
       chicken.setName("Bob");
       ccr.createChicken(chicken);
    }   
}

1 Ответ

1 голос
/ 24 ноября 2011

Ваша проблема может быть связана с этой проблемой http://java.net/jira/browse/GLASSFISH-16164

У меня была такая же проблема в Glassfish 3.1.1 с отдельным EAR and WAR.
Это свойство в persistence.xml решило мою проблему:

<property name="eclipselink.weaving" value="false"/>
...