2

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());

誰でも私を助けることができますか?

4

1 に答える 1

0

createEntityManagerFactory() を呼び出す前に、新しいフィールドを追加してみてください。

于 2013-07-17T13:52:11.057 に答える