【发布时间】:2020-07-01 09:07:53
【问题描述】:
如何在 Hibernate 中使用非主键映射 @ManyToOne 关联?
我可以使用@NaturalId 注释,但仍然有错误:
A Foreign key refering POJO.Question from POJO.Answer has the wrong number of column. should be 4
问题类(多主键):
@Entity
@Table(name = "[dbo].[Question]")
public class Question implements Serializable {
@Column(name = "[Id]", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
@NaturalId
private Integer id;
@EmbeddedId
private QuestionEmbeddable questionEmbeddable;
}
主键
public class QuestionEmbeddable implements Serializable{
@Column(name = "[Development Template Id]")
private int templateId;
//Sekcja w templejcie
@Column(name = "[Section]")
private Integer section;
//Numer w sekcji
@Column(name = "[Number]")
private Integer number;
//Wersja
@Column(name = "[Version]")
private Integer version;
}
答题类:
@Entity
@Table(name = "[dbo].[Answer]")
public class Answer implements Serializable {
@Id
@Column(name = "[Id]", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@JoinColumn(name = "[Question Id]")
@ManyToOne(fetch=FetchType.LAZY)
private Question question;
看起来关联仍然是@EmbeddedId,而不是@Naturalid。不知道为什么?
【问题讨论】:
-
不是,我没有像示例中那样创建与 Embedded 的关联。我想用非主键标记作为@NaturalId 创建它
标签: hibernate associations many-to-one naturalid