【发布时间】:2015-08-19 00:45:54
【问题描述】:
我有一个名为 printer 的表,其中包含 3 个 varchar2 字段,这些字段构成一个复合 ID、一个 Printer.java 类和一个 PrinterID.java 类(用于复合 ID)。
@Entity
public class Printer implements java.io.Serializable {
@EmbeddedId
@AttributeOverrides(
{
@AttributeOverride(name = "rep", column = @Column(name = "REP", nullable = false, length = 30)),
@AttributeOverride(name = "quarter", column = @Column(name = "QUARTER", nullable = false, length = 2)),
@AttributeOverride(name = "product", column = @Column(name = "PRODUCT", nullable = false, length = 20)),
}
)
private PrinterId id;
@Embeddable
public class PrinterId implements java.io.Serializable {
private String rep;
private String quarter;
private String product;
另一个类中的代码...
private Printer getPrinter(String a, String b, String c) {
Session session = // code to get and open a session
session.beginTransaction
PrinterId compId = new PrinterId(a, b, c);
Printer aPrinter = (Printer) session.load(Printer.class, compId);
return aPrinter;
}
我收到以下错误:
org.hibernate.QueryException: 意外字符: '@' [来自 Printer where id = PrinterId@77c95c8b]
“@77c95c8b”是怎么回事 - 是来自 PrinterId.hashCode() 方法吗?我该如何解决这个问题?
【问题讨论】:
标签: java hibernate composite-key