エンティティ「ユーザー」と「顧客」があります。
@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;
}
これを(春を使用して)実行すると、次の例外が発生しました。
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 ("User" 内) のクラス "Customer" を定数 "CST" にマップしたため、これがわかりません。
私は何を間違っていますか?
トーマスの助けを前もって感謝します