簡體   English   中英

org.hibernate.AnnotationException:從y引用x的外鍵具有錯誤的列數。 應該是n

[英]org.hibernate.AnnotationException:A Foreign key refering x from y has the wrong number of column. should be n

在休眠初始化期間會發生以下異常:

org.hibernate.AnnotationException: A Foreign key refering com.maar.projectbuilder.domain.Language from com.maar.projectbuilder.domain.ItemInfo has the wrong number of column. should be 0

我有上面截圖中的表格

我有上面截圖中的表格。 實體類的編寫如下。

public class ItemInfo implements Serializable {

   @Column(name = "name")
   private String name;

   @Id
   @OneToOne(cascade = CascadeType.ALL)
   @JoinColumn(name = "item_id", nullable = false)
   private Item itemId;

   @ManyToOne(targetEntity = Language.class,cascade = CascadeType.ALL)
   @JoinColumn(name = "language_item_id", nullable = false)
   private Language languageItemId;

   @Column(name = "type", nullable = false)
   private Integer type;
   //getters,setters,constructors
}

另一個

public class Language implements Serializable {
   @Column(name = "isDefault")
   private Integer isDefault;

   @Column(name = "abbr")
   private String abbr;

   @Column(name = "name")
   private String name;

   @Id
   @OneToOne(cascade = {CascadeType.ALL})
   @JoinColumn(name = "item_id")
   private Item itemId;
}

我的物品實體

public class Item implements Serializable {
   @Column(name = "c4i")
   private String c4i;

   @Column(name = "status")
   private Integer status=1;

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "id")
   private Integer id;
}

我該如何解決。 我想念什么? 先感謝您!

在ER圖中,item_info使用聯接主鍵:item_id,language_item_id和類型,但是在映射中,您僅映射了item_id

好消息:)

我在JoinColumn批注中添加了referencedColumnName參數,現在可以正常工作了!

最后一個實體看起來像這樣。

public class ItemInfo implements Serializable {

    @Column(name = "name")
    private String name;

    @Id
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "item_id", nullable = false)
    private Item itemId;

    @ManyToOne
    @JoinColumn(name = "language_item_id",**referencedColumnName = "item_id"**)
    private Language languageItemId;

    @Column(name = "type", nullable = false)
    private Integer type;
}

謝謝大家。 祝你今天愉快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM