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;
}