小编Rak*_*esh的帖子

Hibernate Envers将数据恢复为版本

我们使用Hibernate envers来存储数据的历史修订版,需要将数据恢复到某个修订版.由于我们使用Version列来使用乐观锁定方法,当我尝试从先前版本保存数据时,我得到了一个StaleObjectException.有没有办法强制Hibernate存储以前版本的数据?

java hibernate hibernate-envers

15
推荐指数
1
解决办法
2092
查看次数

调用EntityManager.merge()时未设置Id

我在2对象Parent&Child之间有一个简单的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>();

      ....
    }
Run Code Online (Sandbox Code Playgroud)

子实体

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

以下是我的测试,它加载一个现有的父项添加一个子项并在父项上调用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());
} …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

9
推荐指数
1
解决办法
6442
查看次数

标签 统计

hibernate ×2

java ×2

hibernate-envers ×1

jpa ×1