2013-06-12 114 views
0
SELECT * FROM test.pchi new INNER JOIN rlhi old ON new_id = old.menu_id where new.name='?' 

类似:转换MySQL查询休眠标准

Select * from db.employee emp INNER JOIN db.table on emp_tableID = table.id where emp.name = '?' 

如果你能告诉我如何做一个预测,这将是真棒......在:

Select emp.name, emp.sex, table.brand from .... 

我尝试使用抓取,但我很新,并不断发生一些奇怪的错误。有人可以请示范如何做到这一点?

这个怎么样?

sess.createCriteria(pchi.class)/**/ 
       .setFetchMode("rlhi", FetchMode.JOIN) 
       .add(Restrictions.eq("new_id", "rlhi.menu_id")) 
       .add(Restrictions.eq("name", "SOME INPUT")) 
+0

从没有的PCHi号NEW_ID和来自rlhi的old_id。 –

+0

导致你改变:D现在好了 – nachokk

+0

大声笑...是的。你能帮我解决吗? –

回答

1
sess.createCriteria(Pchi.class) 
       .setFetchMode("rlhi", FetchMode.JOIN) //note that rlh1 is the property name in Pchi class 
       .add(Restrictions.eq("name", "SOME INPUT")); 

在你的类,你有这样的事情

class Pchi{ 
@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name="new_id", referencedColumnName="menu_id") 
private Rlhi rlhi; 
} 

class Rlhi{ 
@OneToMany(mappedBy="rlhi") 
private <Set> Pchi pchis; 
} 

注意当您使用SET应该重写equals()hashCode()方法才能正常工作

+0

嘿谢谢! 那么,但这会做我上面指定的两列的联接吗? –

+0

@gran_profaci我编辑过,只是尝试我不能在这里尝试,所以可能会有错误,看在输出多少查询执行,因为你必须避免n + 1选择 – nachokk

+0

非常感谢你!让我试试这个! –