使用保持相同标识符的JPA导入java数据
我开发了一个简单的web应用程序,它使用一些使用JPA的数据库表。假设表A和表B参考表A。我的应用程序在我的客户的不同环境中运行,如开发、测试和生产阶段。因此,我必须创建一个在这些环境之间导出/导入数据的流程
移动对象时,我希望保持相同的ID,因为我希望保持相同的引用。JPA有没有办法做到这一点
我正在使用Hibernate4.3.8和Oracle数据库。这是我的实体:
@Entity
@Table
public class Category
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
}
我正试图做到这一点:
Category category = new Category();
category.setId(1L);
category.setName("Test");
EntityManager em = PersistenceManager.getEntityManager();
em.merge(category);
但是它使用hibernate序列来生成ID,而不是使用给定的ID。如果我使用persist
而不是merge
,它会抛出一个异常,因为它是一个分离的对象
有办法吗
# 1 楼答案
是的,您可以使用定义的序列定义自定义id生成器
您需要一个扩展
org.hibernate.id.SequenceGenerator
的类:要在实体中使用自定义生成器: