Java 通过多个映射为实体映射的重复列
我不明白为什么我仍然得到hibernate.MappingException:Java 通过多个映射为实体映射的重复列,java,hibernate,jpa,many-to-one,embeddable,Java,Hibernate,Jpa,Many To One,Embeddable,我不明白为什么我仍然得到hibernate.MappingException: 实体映射中的重复列:PanelCategoryOption列:category\u id(应使用insert=“false”update=“false”进行映射) 面板类别选项映射 @Entity @Table(name = "eq_panel_category_option") public class PanelCategoryOption { @EmbeddedId private Panel
实体映射中的重复列:PanelCategoryOption列:category\u id(应使用insert=“false”update=“false”进行映射)
面板类别选项映射
@Entity
@Table(name = "eq_panel_category_option")
public class PanelCategoryOption {
@EmbeddedId
private PanelCategoryOptionId id;
}
@Embeddable
public class PanelCategoryOptionId implements Serializable {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "panel_id", referencedColumnName = "panel_id"),
@JoinColumn(name = "category_id", referencedColumnName = "category_id")})
private PanelCategory panelCategory;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "category_option_id", referencedColumnName = "id", insertable = false, updatable = false),
@JoinColumn(name = "category_id", referencedColumnName = "category_id", insertable = false, updatable = false)})
private CategoryOption categoryOption;
}
PanelCategoryOptionId映射
@Entity
@Table(name = "eq_panel_category_option")
public class PanelCategoryOption {
@EmbeddedId
private PanelCategoryOptionId id;
}
@Embeddable
public class PanelCategoryOptionId implements Serializable {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "panel_id", referencedColumnName = "panel_id"),
@JoinColumn(name = "category_id", referencedColumnName = "category_id")})
private PanelCategory panelCategory;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "category_option_id", referencedColumnName = "id", insertable = false, updatable = false),
@JoinColumn(name = "category_id", referencedColumnName = "category_id", insertable = false, updatable = false)})
private CategoryOption categoryOption;
}
模式
为什么在PanelCategoryOption表中有category\u id引用。 这不是一个规范化的数据库设计,因为它不符合第二个标准形式。尝试并更新您的数据库设计 另外,如果您不想更改DB设计,则需要进行以下更改:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "category_option_id", referencedColumnName = "id", insertable = false, updatable = false) })
private CategoryOption categoryOption;
@JoinColumns({
@JoinColumn(name = "category_id", referencedColumnName = "category_id", insertable = false, updatable = false)})
private Category category;