我已经花了第二天阅读和测试这个问题,但它似乎没有去任何地方。
首先,数据库有4个主表:
我想在@Entity
对象中连接所有这些对象,这些对象可以调用每个对应的属性。似乎有两种(???)方式来加入表格。第一个例子:
@Entity
@Table(name="recruits")
public class Recruit {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="first_name")
...
attributes
...
@ManyToMany(fetch=FetchType.EAGER,
cascade= {CascadeType.DETACH, CascadeType.MERGE,
CascadeType.PERSIST, CascadeType.REFRESH})
@JoinTable(
name="current_score",
joinColumns=@JoinColumn(name="recruit_id"),
inverseJoinColumns=@JoinColumn(name="test_id"))
private List<Test> tests;
@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL )
@JoinColumn(name="recruit_id")
private List<CurrentScore> currentScore;
此处Recruit实体连接到Test表,然后连接到Current Score表。 这似乎不对,因为当前得分必须与特定的测试相对应,即使我从他们尝试的那样做,也似乎没有任何确定性。
我能想到的第二种方式是RecruitDAOImplementation
类:
@Override
public List<Recruit> getAllRecruits() {
Session session = sessionFactory.getCurrentSession();
Query<Recruit> currentQuery =
session.createQuery("from Recruit", Recruit.class);
List<Recruit> allRecruits = currentQuery.getResultList();
return allRecruits;
}
我没有在任何教程中看到它,但是如果有人能够确认它是正确的方式以及它究竟应该返回什么 - 我很乐意这样做。
如果有人有任何示例如何改进/纠正这两个解决方案,请考虑另一个解决方案或解释的链接,这将真的有帮助!