我正在尝试让带有动态实体的序列在 EclipseLink 中工作,我需要一些帮助。
我正在定义我的动态实体,如下所示:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("default");
EntityManager em = emf.createEntityManager();
Session session = JpaHelper.getEntityManager(em).getServerSession();
DynamicClassLoader dcl = DynamicClassLoader.lookup(session);
Class<?> testClass = dcl.createDynamicClass("org.persistence.Test");
JPADynamicTypeBuilder test = new JPADynamicTypeBuilder(testClass, null, "TEST");
test.addDirectMapping("id", long.class, "T_ID");
test.setPrimaryKeyFields("T_ID");
test.addDirectMapping("col1", long.class, "T_COL1");
test.addDirectMapping("col2", int.class, "T_COL2");
test.addDirectMapping("col3", String.class, "T_COL3");
test.addDirectMapping("col4", String.class, "T_COL4");
test.addDirectMapping("col5", double.class, "T_COL5");
test.addDirectMapping("col6", double.class, "T_COL6");
DynamicHelper helper = new JPADynamicHelper(em);
helper.addTypes(true, true, test.getType());
我注意到一切都是根据指定创建的。我试图寻找一些如何使用数据库序列的文档,我注意到了 JPADynamicTypeBuilder.configureSequencing(Sequence, String, String) 方法。但我找不到任何关于如何做到这一点的例子。我尝试了这种方法,并且总是以默认排序策略结束,即名为 SEQUENCE 的表。
我尝试使用 @GeneratedValue 和 @SequenceGenerator 预编译实体,一切正常,所以我在动态实体上做错了。
有谁知道我可能做错了什么?
这似乎无关紧要,但无论如何我都在告诉我我的数据库是 Oracle。
提前致谢
芮
最佳答案
我没有关于您的 Sequence 对象的详细信息,所以我的示例只是通用的,但像下面这样的东西应该可以工作:
test.configureSequencing(
new NativeSequence("ORACLE_SEQ_OBJ", 1, 1),
"ORACLE_SEQ_OBJ",
"T_ID");
关于java - EclipseLink 中具有动态实体的序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5598728/