Hibernate 是否可以在单个实体内映射多行?
我想使用一个单独的实体类来保存关系。但是,我不知道应该在Hibernate 是否可以在单个实体内映射多行?,hibernate,jpa,associations,Hibernate,Jpa,Associations,我想使用一个单独的实体类来保存关系。但是,我不知道应该在StudentTest类中添加什么注释 我尝试了几种方法(例如,ElementCollection),但没有为名为mainDB的EntityManager提供持久性提供程序。如果删除StudentTest类,则不会发生此错误 或者不能使用列表在学生测试中保存测试 这些实体是: @Entity @Table(name = "students") public class Student { @Id @Column(name = "i
StudentTest
类中添加什么注释
我尝试了几种方法(例如,ElementCollection
),但没有为名为mainDB的EntityManager提供持久性提供程序。如果删除StudentTest
类,则不会发生此错误
或者不能使用列表
在学生测试
中保存测试
这些实体是:
@Entity
@Table(name = "students")
public class Student {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
}
@Entity
@Table(name = "tests")
public class Test {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "mark")
private int mark;
}
@Entity
@Table(name = "student_tests")
public class StudentTest {
private Student student;
private List<Test> test;
}
更新:我尝试用MapsId添加一个复合Id,但似乎没有帮助
@Entity
@Table(name = "student_tests")
public class StudentTest {
@EmbeddedId
private StudentTestId id;
@ManyToOne
@MapsId("studentId")
private Student student;
@OneToMany
@MapsId("testId")
private List<Test> test;
}
@Embeddable
public class StudentTestId implements Serializable {
@Column(name = "student_id")
private Long studentId;
@Column(name = "test_id")
private Long testId;
}
@实体
@表(name=“学生考试”)
公开课学生测验{
@嵌入ID
私人学生测试id;
@许多酮
@MapsId(“学生ID”)
私立学生;
@独身癖
@MapsId(“testId”)
私有列表测试;
}
@可嵌入
公共类StudentTestId实现可序列化{
@列(name=“student\u id”)
私立长期学生;
@列(name=“test\u id”)
私人长睾丸;
}
您不存在“问题”。你说什么就做什么@BillyFrost我的问题是应该在StudentTest类中为属性添加什么注释。那你为什么不看看任何基本的JPA教程呢?它们都告诉你如何映射JPA中的关系。我有一些基本知识。我想我的问题是关联表有一个实体,所以我需要在OneToMany上使用Id。同时,它是一个复合密钥
@Entity
@Table(name = "student_tests")
public class StudentTest {
@EmbeddedId
private StudentTestId id;
@ManyToOne
@MapsId("studentId")
private Student student;
@OneToMany
@MapsId("testId")
private List<Test> test;
}
@Embeddable
public class StudentTestId implements Serializable {
@Column(name = "student_id")
private Long studentId;
@Column(name = "test_id")
private Long testId;
}