java - 如何在帮助程序中将映射添加到现有的动态类型 - EclipseLink

标签 java dynamic eclipselink entitymanager

我正在 EclipseLink 中创建一个动态类,但创建后无法向我的类添加新字段。

当我添加一个新字段时,eclipselink 在表中创建了一个列,但是当尝试在此列中设置值时,EntityManager 无法处理并置为 NULL。

在 JPADynamicHelper 中添加新字段后,如何向我的 DynamicType 添加新字段?

DynamicClassLoader dcl = new DynamicClassLoader(Thread.currentThread().getContextClassLoader());

    Class<?> exClass= dcl.createDynamicClass(packagePrefix + "Example");

    JPADynamicTypeBuilder exBuilder= new JPADynamicTypeBuilder(doClass, null, "Example");

    // configure builber
    exBuilder.setPrimaryKeyFields("ID");
    exBuilder.addDirectMapping("id", int.class, "ID");
    exBuilder.addDirectMapping("name", String.class, "NAME");

    // configure descriptor
    ClassDescriptor exDescriptor = exBuilder.getType().getDescriptor();

    //configure sequence id
    exBuilder.configureSequencing("DYNAMIC_SEQ", "ID");

    // EntityManagerFactory
    emf = createEntityManagerFactory(dcl, "default");       
    JPADynamicHelper helper = new JPADynamicHelper(emf);

    //Here I add the helper type
    helper.addTypes(true, true, exBuilder.getType());

    // Create tables and relationship
    new SchemaManager(helper.getSession()).extendDefaultTables(true);


    //Adding a new field
    exBuilder.addDirectMapping("id", int.class, "ID");

    //here I add the helper again but do not add
    helper.addTypes(true, true, exBuilder.getType());

谁能帮帮我?

最佳答案

尝试在调用 createEntityManagerFactory() 之前添加新字段。

关于java - 如何在帮助程序中将映射添加到现有的动态类型 - EclipseLink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684836/

相关文章:

java - EclipseLink 是否会导致 ORA-00957 : duplicate column name error because of a @DiscriminatorColumn in a polymorphic entity?

java - 按钮尺寸变形

java - 在chrome不弹出窗口的情况下更改下载目录

java - 如何检查 Maven POM 中使用的所有依赖项?

java - 自定义异常错误继承

ajax - 通过 Ajax 动态加载 EditorFor 模板

java - 当用户到达 ViewPager 的末尾时,如何动态地将 fragment 添加到 ViewPager 的开头?

java - 未捕获异常的原因?

javascript - 覆盖 javascript 类中的默认 get,例如 php 中的 __get

MySQL 性能和 Memcache