Id не устанавливается при вызове EntityManager.merge ()

У меня есть простая связь OneToMany между двумя объектами, родительский и дочерний, как показано ниже.

Родительский объект

    @Entity
    public class Parent {
     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
     private Long id;
     private String name;
     @Version
     private Long version;

      @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
      List<Child> children = new ArrayList<Child>();

      ....
    }

Дочерний объект

    @Entity
    public class Child {
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Long id;
      private String name;
      @Version
      private Long version;
        ...
    }

Ниже приведен мой тест, который загружает существующий родительский элемент, добавляет дочерний элемент и вызывает EntityManager.merge () для родительского элемента.

    @Test
public void testParent(){
    Parent parent = (Parent) dao.loadParent(Parent.class, parentId);

    Child c = new Child();
    c.setName("c");

    parent.getChildren().add(c);

    dao.mergeEntity(parent);

    Assert.assertNotNull(c.getId());
}

Утверждение, в котором проверяется первичный ключ идентификатора, не выполняется. Я вижу, что запись правильно вставлена ​​в базу данных вместе с автоматически назначаемым первичным ключом.

Все мои вызовы DAO обертываются вокруг транзакции с распространением в соответствии с требованиями.

9
задан oliholz 1 June 2011 в 07:47
поделиться