最初,我使用XJC(JAXB实用程序)生成Java类。如何安排注释以保存ClaimType的实体? ClaimType和Reason与OneToMany相关。
package com.belkam.res.domain;
import com.belkam.utils.DateUtils;
import javax.persistence.*;
import javax.xml.datatype.XMLGregorianCalendar;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
public class ClaimType {
protected long claimId;
protected long rsnPart;
protected ClaimType.ReasonList resasonList;
//Defalut constructor and getters &setters
public static class ReasonList {
protected List<ClaimType.ReasonList.Reason> reason;
public List<ClaimType.ReasonList.Reason> getReason() {
if (reason == null) {
reason = new ArrayList<ClaimType.ReasonList.Reason>();
}
return this.reason;
}
public static class Reason {
protected long reasonId;
protected int reasonType;
protected String reasonNum;
@Transient
protected XMLGregorianCalendar reasonDate;
protected String lineNum;
protected String resBsNum;
//Defalut constructor and getters &setters
}
}
}
答案 0 :(得分:0)
当您使用混合样式进行注释(字段和getter)时,似乎会出现此异常。您应该始终对单个实体使用一种方法:注释字段或getter。
另外,显式指定目标实体可能会有所帮助,也许Hibernate与内部类混淆:
*(uchar*)rsGetElementAt(...)
通常,Hibernate支持静态内部类作为实体。虽然我不确定JPA,但是Hibernate和JPA之间可能存在一些不匹配(尽管我认为Hibernate作为JPA的超集仍然允许使用JPA注释)。
如果这是JPA规范问题,您可以尝试在hbm文件中为这些实体定义映射。这样做的另一个好处是,当您使用JAXB实用程序重新生成类时,不会松散映射。