我们的需求需要基于用户输入生成Pojos。因此,类是根据用户提供的输入在运行时创建的。我们一直在使用Javassist创建对象,并与其一起使用注释来创建所有必需的映射。例如,创建以下内容时没有问题,因为不涉及泛型:
@ManyToOne(cascade = CascadeType.ALL)
public Address getUserAddress() {
return this.userAddress;
}当我们使用Javassist时,它会被创建得很好。然而,当我们试图为一个到多个映射创建注释时,Javassist不工作,因为它不支持泛型。
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
public Set<UserRecord> getUserRecords() {
return this.userRecords;
}这是不起作用的,因为我们需要将返回类型设置为" set“,这是无法用Javassist创建的。我还尝试使用set泛型方法,方法如下
ctfield.setGenericSignature(java.lang.String sig)到目前为止,我还没有成功地生成一个具有泛型返回类型的类。是否有其他方法或其他解决办法可用于解决这一问题?
发布于 2014-07-25 07:15:43
CtMethod继承了CtBehavior#setGenericSignature()。
按照CtClass javadoc获取示例代码。
https://stackoverflow.com/questions/24779232
复制相似问题