3
我有實體的 「用戶」 和 「客戶」:的Hibernate 3.6.7:問題@ANY和外鍵
@Entity
@Table(name = "USR_USER")
public class User extends PersistentObject {
[...]
@Any(metaColumn = @Column(name = "USR_OWNERTYPE"))
@AnyMetaDef(idType = "long", metaType = "string", metaValues = {
@MetaValue(targetEntity = Customer.class, value = "CST"),
@MetaValue(targetEntity = Client.class, value = "CLT") })
@JoinColumn(name = "USR_OWNERID")
private PersistentObject owner;
}
@Entity
@Table(name = "CST_CUSTOMER")
public class Customer extends PersistentObject {
@Id
@GeneratedValue
@Column(name="CST_ID")
private long id;
[...]
// @OneToMany(mappedBy = "owner")
private transient Set<User> users;
}
運行這個(用spring),我得到了以下異常:
Caused by: org.hibernate.MappingException: Foreign key (FK35B91BB65D577CEF:USR_USER [USR_OWNERTYPE,USR_OWNERID])) must have same number of columns as the referenced primary key (CST_CUSTOMER [CST_ID])
我不明白這一點,因爲我將@AnyMetaDef(在「用戶」)中的類「Customer」映射爲常量「CST」。
我在做什麼錯?
預先感謝任何幫助 托馬斯
啊好吧。謝謝。 – Thomas777
這似乎是外鍵是由休眠自動創建的。 (我正在使用HSQL的休眠屬性「hibernate.hbm2ddl.auto」=>「創建」) 如何禁用爲該關係創建外鍵? – Thomas777
錯誤是否發生在有或沒有上面註釋過的「@ OneToMany」?沒有'@ OneToMany',我認爲這應該是一個有效的'@ Any'映射。我期望FK錯誤來自'@ OneToMany'。 –