java - EclipseLink 中具有动态实体的序列

标签 java dynamic eclipselink sequence entities

我正在尝试让带有动态实体的序列在 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/

相关文章:

c++ - 动态/在执行期间重新定义或添加类成员函数

swift - CollectionViewcell自动布局高度、动态高度、内容高度

java - 如何绘制2个城市之间的距离(关系JPA)

java - 将自定义 jtable 模型表类作为参数传递

java - 编译时在 JSP 页面中发现错误

objective-c - 动态类型、Objective-C,它是如何工作的?

java - Tomcat 不连接到数据库,但是当我从 netbeans 中运行它时,它工作得很好

java - Mergesort 实现不正确

java - 在 Android TextView 中对齐文本和图标

java - 尝试为 JPA 表添加新值时出错