【发布时间】:2015-09-27 10:39:56
【问题描述】:
我尝试用 JPA 连接两个表
第一个表与实体 ReportTripSingle 相关联 第二个表与实体 TripData 相关联 第二张表的主键用复合键(实体TripDataPK)描述
实体 TripDataPK
@Embeddable
public class TripDataPK implements Serializable {
public TripDataPK() {
}
@Column(name = "FTP_ID", nullable = false)
private long ftpId;
@Column(name = "FTP_BATCH_ID", nullable = false)
private long ftpBatchId;
@Column(name = "FTP_DAY", nullable = false)
private long ftpDay;
}
实体旅行数据
public class TripData implements java.io.Serializable {
@EmbeddedId
private TripDataPK tripDataPK;
// some properties ...
}
实体 ReportTripSingle
public class ReportTripSingle implements java.io.Serializable {
@Id
@Column(name = "TRE_ID", precision = 10, scale = 0)
private long id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "TRE_FTP_ID", referencedColumnName = "FTP_ID")
private TripData tripData;
}
如您所见,我想通过 TripData 加入 ReportTripSingle
它不起作用:(
这是堆栈跟踪:
引起:org.hibernate.AnnotationException: 引用的ColumnNames(FTP_ID) com.nexo.susan.be.model.ReportTripSingle.tripData 引用 com.nexo.susan.be.model.TripData 未映射到单个属性 org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:336) 在 org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:116) 在 org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1522) 在 org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1443) 在 org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1346) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
确实 TripData 没有映射到单个属性,但我想加入 FTP_ID
问候。
【问题讨论】:
-
“它不起作用”是什么意思?能否提供一些错误日志、异常、不良行为?
-
我已经重现了这个错误并添加了堆栈跟踪