[英]org.hibernate.AnnotationException:A Foreign key refering x from y has the wrong number of column. should be n
the following exception happens during hibernate initialisation: 在休眠初始化期间会发生以下异常:
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
I have the tables as in the screenshot above. 我有上面截图中的表格。 Entity classes are written as below. 实体类的编写如下。
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
}
another one 另一个
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;
}
my item entity 我的物品实体
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;
}
How could I resolve this. 我该如何解决。 What am I missing? 我想念什么? Thank you in advance! 先感谢您!
在ER图中,item_info使用联接主键:item_id,language_item_id和类型,但是在映射中,您仅映射了item_id
Happy News :) 好消息:)
I added referencedColumnName param to JoinColumn annotation and thats working fine now ! 我在JoinColumn批注中添加了referencedColumnName参数,现在可以正常工作了!
Last Entity looking like this. 最后一个实体看起来像这样。
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;
}
Thanks Everybody. 谢谢大家。 Have a nice day. 祝你今天愉快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.