Java createAlias/createCriteria休眠内部连接
我有两张桌子,父母和孩子。我想在Hibernate条件中使用的查询Java createAlias/createCriteria休眠内部连接,java,oracle,hibernate,Java,Oracle,Hibernate,我有两张桌子,父母和孩子。我想在Hibernate条件中使用的查询 SELECT tcr.* FROM case_reminders tcr INNER JOIN case_reminder_opr tco ON tcr.case_id = tco.case_id WHERE tcr.case_status = 'OPN' AND tco.operator_id = 111; 我将标准写为 Criteria ctr = getSession().createCriteri
SELECT tcr.*
FROM case_reminders tcr
INNER JOIN case_reminder_opr tco ON tcr.case_id = tco.case_id
WHERE tcr.case_status = 'OPN'
AND tco.operator_id = 111;
我将标准写为
Criteria ctr = getSession().createCriteria(CaseReminderOpr.class).add(Restrictions.eq("pk.oprOperatorId", operatorId));
ctr.createCriteria("pk.crmCaseId", "CR", Criteria.INNER_JOIN).add(Restrictions.eq("CR.caseStatus", STATUS.OPEN.getValue()));
List<CaseReminderOpr> oprList = ctr.list();
请帮助我进行内部加入查询,再次感谢您的帮助。更改如下,然后生效。我后来才意识到这一点 在主实体类中将Joincolumn设置为insertable=false,updateable=false
@Entity
@Table(name="CASE_REMINDER_OPR")
public class CaseReminderOpr implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private CaseReminderOprPK pk;
@ManyToOne
@JoinColumn(name = "CASE_ID", insertable=false, updatable=false)
private CaseReminders caseRem;
}
现在,查询应该按预期工作
Criteria ctr = getSession().createCriteria(CaseReminderOpr.class, "CRO").add(Restrictions.eq("pk.oprOperatorId", operatorId));
ctr.createCriteria("CRO.caseRem", "CR", Criteria.INNER_JOIN).add(Restrictions.eq("CR.caseStatus", STATUS.OPEN.getValue()));
List<CaseReminderOpr> oprList = ctr.list();
Criteria ctr=getSession().createCriteria(casememendorPr.class,“CRO”).add(Restrictions.eq(“pk.oprOperatorId”,operatorId));
createCriteria(“CRO.caseRem”,“CR”,Criteria.internal_JOIN”).add(Restrictions.eq(“CR.caseStatus”,STATUS.OPEN.getValue());
List-oprList=ctr.List();
希望我能清楚地解释
Criteria ctr = getSession().createCriteria(CaseReminderOpr.class, "CRO").add(Restrictions.eq("pk.oprOperatorId", operatorId));
ctr.createCriteria("CRO.caseRem", "CR", Criteria.INNER_JOIN).add(Restrictions.eq("CR.caseStatus", STATUS.OPEN.getValue()));
List<CaseReminderOpr> oprList = ctr.list();