虽然我知道如何在SQL编辑器中执行此操作,但我有三个表需要进行内连接,我不知道它如何与Hibernate一起使用。
为了充分解释,我有一个:
我有单独的DAO,每个都有这样的代码 这是我的技能道:
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import softdev.asese.models.SkillModel;
import softdev.asese.utils.HibernateUtil;
public class SkillDao
{
public List<SkillModel> getSkill() {
List<SkillModel> list = new ArrayList<SkillModel>();
Session session = HibernateUtil.openSession();
Transaction tx = null;
try {
tx = session.getTransaction();
tx.begin();
list = session.createQuery("from SkillModel").list();
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
return list;
}
}
My Section Dao和Skillset Dao与此相同,当然不同的是查询和命名。它们都是相互连接和引用的。技能组与Section连接,Section与Skill相连。 我还有一个评估,其中技能是连接的。这将是试卷。我需要的是正确地显示每个标题,部分和问题,并按此顺序显示。到目前为止,我还没有成功,只是设法通过技能加载所有问题(没有分段和标题)
<% SkillDao sDao = new SkillDao();
List<SkillModel> skList = sDao.getSkill();
%>
<tbody>
<% for(SkillModel s : skList) { %>
<tr>
<td><%= s.getSkillName() %><br><br>
<input type="radio" name="ans" value="Independent">Independent<br>
<input type="radio" name="ans" value="Emerging">Emerging<br>
<input type="radio" name="ans" value="No response">No Response<br><br><br></td>
</tr>
<% } %>
答案 0 :(得分:0)
假设所有关系都是一对多,并且您的实体对象如下所示:
@Entity
public class SkillSet {
@OneToMany
private List<Section> sections;
public List<Section> getSections() { return sections; }
}
@Entity
public class Section {
@OneToMany
private List<SkillModel> skillModels;
@ManyToOne
private SkillSet skillSet;
public SkillSet getSkillSet() { return skillSet; }
}
@Entity
public class SkillModel {
@ManyToOne
private Section section;
public Section getSection() { return section; }
}
然后可以按如下方式获得SkillSet和Section对象:
List<SkillModel> skList = sDao.getSkill();
for(SkillModel model : skList) {
Section s = model.getSection();
SkillSet ss = s.getSkillSet();
}