我將一些 hbm 配置翻譯為帶注釋的 java 類。在 hbm 中,一些類是使用繼承策略“SINGLE_TABLE”定義的,并且其他一些實體以多對一關(guān)系將其引用為 Map。當我嘗試啟動該應用程序時,出現(xiàn)以下錯誤:Caused by: org.hibernate.AnnotationException: Map key property not found: com.package.MyClass.Id我在網(wǎng)上搜索了一些解釋,但沒有同時描述這種情況下的 SINGLE_TABLE 繼承策略和 OneToMany 行為。我的父類如下:@Entity@Table(name = "parentclass")@Inheritance(strategy = InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name = "type", length = 10, discriminatorType = DiscriminatorType.INTEGER)@DiscriminatorValue("100")public abstract class ParentClass { @Id @Column(name = "Id", length = 11) @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; ....}子班:@Entity@DiscriminatorValue("2")public abstract class ChildClass { ....}具有以下關(guān)系的類:@Entity@Table(name = "otherclass")@PrimaryKeyJoinColumn(name = "IdSys")public class OtherClass extends OtherParent { .... @OneToMany @JoinColumn(name = "IdOther") @MapKey(name = "Id") @Where(clause = "type = 2") private Map<String, ChildClass> childClassMap; ....}當它在 hbm 中定義時它就起作用了,所以我想它應該與注釋一起工作。
1 回答

鴻蒙傳說
TA貢獻1865條經(jīng)驗 獲得超7個贊
我終于知道是什么問題了。
在hbm文件中,MapKey名稱指的是列名稱。但注釋引用了字段名稱。
所以而不是
@MapKey(name = "Id")
我必須有
@MapKey(name = "id")
添加回答
舉報
0/150
提交
取消