我正在使用 java codeModel 生成 hibernate 实体类。
在表具有复合键的地方,我正在生成一个 @Embeddable
类,然后我需要在我的实体类中定义一个字段。
目前这个复合键类被定义为完全限定名称,在我的实体类中没有 java import 语句:例如
private com.aaa.bbb.CompoundKey compoundKey;
我如何告诉 codeModel 不要完全限定我的 CompoundKey 字段?例如
import com.aaa.bbb.CompoundKey;
private CompoundKey compoundKey;
我这样创建我的实体类
JCodeModel codeModel = new JCodeModel();
JDefinedClass entityClass = codeModel._class("com.aaa.bbb.EntityClassName");
我这样创建复合键类
JDefinedClass compoundKeyClass = codeModel._class("com.aaa.bbb.CompoundKeyClassName");
我像这样在实体类中创建 compoundKey 字段
JFieldVar field = entityClass.field(JMod.PRIVATE, compoundKeyClass, "compoundKey");
最佳答案
我已经找到了这个问题的原因
当生成的复合键类名以实体类名开头时,codeModel 完全限定实体字段声明。
例如当实体和复合键类命名如下时,我看到了我的问题中提到的问题
ENTITY CLASS NAME com.aaa.bbb.ENTITY
COMPOUND KEY CLASS NAME com.aaa.bbb.ENTITYKEY
但是,当复合键类名称不以实体类名称开头时,codeModel 可以正常工作
ENTITY CLASS NAME com.aaa.bbb.ENTITY
COMPOUND KEY CLASS NAME com.aaa.bbb.KEYENTITY
关于java - 如何在没有完全限定名称的情况下在另一个生成的类中定义 java codeModel 生成的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25263255/