EclipseLink中具有动态实体的序列

rpv*_*lao 8 java entities dynamic sequence eclipselink

我正在尝试使用动态实体的序列在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());
Run Code Online (Sandbox Code Playgroud)

我注意到一切都是根据指​​定创建的.我试图寻找一些文档如何使用数据库序列,我注意到了JPADynamicTypeBuilder.configureSequencing(Sequence,String,String)方法.但我找不到任何关于如何做的例子.我玩弄了这个方法,我总是使用默认的排序策略,即一个名为SEQUENCE的表.

我尝试使用@GeneratedValue和@SequenceGenerator进行预编译实体,一切正常,所以我对动态实体做错了.

有谁知道我可能做错了什么?

这似乎无关紧要,但无论如何我告诉我的数据库是Oracle.

提前致谢,

Gor*_*rke 1

我没有有关您的 Sequence 对象的详细信息,因此我的示例只是通用的,但类似以下内容应该有效:

test.configureSequencing(
      new NativeSequence("ORACLE_SEQ_OBJ", 1, 1),
      "ORACLE_SEQ_OBJ",
      "T_ID");
Run Code Online (Sandbox Code Playgroud)