将MySQL查询转换为Hibernate Criteria [英] Converting MySQL query to Hibernate Criteria

查看:133
本文介绍了将MySQL查询转换为Hibernate Criteria的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  SELECT * FROM test.pchi new INNER JOIN rlhi old ON new_id = old.menu_id where new.name ='?'

类似于:

 从db.employee emp中选择* INNER JOIN db.table on emp_tableID = table.id where emp.name ='?'

如果你可以告诉我如何做一个投影,这将是很棒的......如下:

 选择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))


解决方案

  sess.createCriteria(Pchi.class)
.setFetchMode(rlhi,FetchMode.JOIN)//注意rlh1是Pchi类中的属性名称
.add(Restrictions.eq(name,SOME INPUT));

在你的课堂里你有类似的东西

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

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

当您使用 SET 应该覆盖 equals() hashCode()方法正常工作


SELECT * FROM test.pchi new INNER JOIN rlhi old ON new_id = old.menu_id where new.name='?'

Similar to:

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

If you could tell me how to do a projection, that would be awesome... as in:

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

I tried using fetch, but I'm very new to this and keep getting some weird errors. Could someone please demonstrate how to do this?

How about this?

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

解决方案

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

In your class you have something like this

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

NOTE When you use SET should override equals() and hashCode() method to work properly

这篇关于将MySQL查询转换为Hibernate Criteria的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆