[英]JPA [Eclipselink] - How to refresh metadata of Dynamic entities created?
[英]Sequences with Dynamic Entities in 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());
我注意到,所有内容都是根据指定的内容创建的。 我试图寻找一些有关如何使用数据库序列的文档,并且注意到JPADynamicTypeBuilder.configureSequencing(Sequence,String,String)方法。 但我找不到有关如何执行此操作的任何示例。 我玩弄了这种方法,总是以默认的排序策略结束,即名为SEQUENCE的表。
我尝试使用@GeneratedValue和@SequenceGenerator对预编译的实体进行测试,并且一切正常,因此我对动态实体做错了。
有谁知道我可能做错了什么?
似乎无关紧要,但是无论如何我要告诉我的数据库是Oracle。
提前致谢,
瑞
我没有您的Sequence对象的详细信息,因此我的示例只是通用的,但类似以下内容的方法应该起作用:
test.configureSequencing(
new NativeSequence("ORACLE_SEQ_OBJ", 1, 1),
"ORACLE_SEQ_OBJ",
"T_ID");
您可以在JPADynamicTypeBuilder上使用configureSequencing方法来设置序列。
这是一个很好的例子: http : //dev.eclipse.org/svnroot/rt/org.eclipse.persistence/branches/2.1/trunk/examples/jpa.employee/eclipselink.example.jpa.employee.dynamic/src/example /EmployeeDynamicMappings.java
我仍在尝试使其与表排序一起使用,但给我一个错误:
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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.