我有一个包含复合主键的表:
从SO中的其他问题的表中提取示例
复合主键类:
@Embeddable
public class TimePK implements Serializable {
protected Integer levelStation;
protected Integer confPathID;
protected Integer col1;
protected Integer col2;
public TimePK() {}
public TimePK(Integer levelStation, Integer confPathID, Integer col1, Integer col2) {
this.levelStation = levelStation;
this.confPathID = confPathID;
this.col1 = col1;
this.col2 = col2;
}
// equals, hashCode
}
和实体:
@Entity
class Time implements Serializable {
@EmbeddedId
private TimePK timePK;
private String src;
private String dst;
private Integer distance;
private Integer price;
//...
}
persistent.xml中有两个条目:
com.somepackage.Time com.somepackage.TimePK
问题:
如何在查询中使用上面的类? 例如找到confPathId,col2,其中levelstation为10,col1为20 - 这个要求的hibernate查询是什么?
在查询中使用“来自TimePK T”会给出“TimePK未映射”错误!!
答案 0 :(得分:2)
第2.4.1.3 Examples of Derived Identities
节定义了很多的示例。
答案 1 :(得分:0)
您的TimePK不是真实实体(映射到db中的表),它是包含Time对象PK的虚拟对象。 你应该找到Time对象,而不是TimePK。