2

我正在使用 java codeModel 来生成休眠实体类。

在表有复合键的地方,我正在生成一个@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");
4

1 回答 1

1

我发现了这个问题的原因

当生成的复合键类名以实体类名开头时,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
于 2014-08-14T07:33:45.720 回答