Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日食中具有动态实体的序列_Java_Dynamic_Eclipselink_Sequence_Entities - Fatal编程技术网

Java 日食中具有动态实体的序列

Java 日食中具有动态实体的序列,java,dynamic,eclipselink,sequence,entities,Java,Dynamic,Eclipselink,Sequence,Entities,我正在尝试让带有动态实体的序列在EclipseLink中工作,我需要一些帮助 我定义的动态实体如下所示: EntityManagerFactory emf = Persistence.createEntityManagerFactory("default"); EntityManager em = emf.createEntityManager(); Session session = JpaHelper.getEntityManager(em).getServerSe

我正在尝试让带有动态实体的序列在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());
EntityManagerFactory emf=Persistence.createEntityManagerFactory(“默认”);
EntityManager em=emf.createEntityManager();
会话会话=JpaHelper.getEntityManager(em.getServerSession();
DynamicClassLoader dcl=DynamicClassLoader.lookup(会话);
类testClass=dcl.createDynamicClass(“org.persistence.Test”);
JPADynamicTypeBuilder测试=新的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=新的JPADynamicHelper(em);
addTypes(true,true,test.getType());
我注意到所有东西都是按照指定的规则创建的。我试图寻找一些关于如何使用数据库序列的文档,我注意到了JPADynamicTypeBuilder.configureSequencing(Sequence,String,String)方法。但我找不到任何关于如何做到这一点的例子。我玩弄了这个方法,最后总是使用默认的排序策略,即一个名为SEQUENCE的表

我使用@GeneratedValue和@SequenceGenerator尝试了一个预编译的实体,一切都很好,所以我对动态实体做了一些错误的事情

有人知道我可能做错了什么吗

这似乎无关紧要,但我还是要告诉大家,我的数据库是Oracle

提前感谢,


Rui

我没有关于序列对象的详细信息,因此我的示例只是一般性的,但类似于以下的内容应该可以工作:

test.configureSequencing(
      new NativeSequence("ORACLE_SEQ_OBJ", 1, 1),
      "ORACLE_SEQ_OBJ",
      "T_ID");

您可以使用JPADynamicTypeBuilder上的configureSequencing方法来设置序列

这里有一个很好的例子:

我仍在尝试使用表排序,但它给了我一个错误:

Exception [EclipseLink-41] (Eclipse Persistence Services - 2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.