ssh框架外键查询
举个例子,知道一个学校的系,怎么查到所有系里的学生宿舍,代码如下,@RepositorypublicclassChuangweiDaoextendsHibernateDa...
举个例子,知道一个学校的系,怎么查到所有系里的学生宿舍,代码如下,
@Repository
public class ChuangweiDao extends HibernateDaoSupport{
public List<Bed> search(YuanXi yuanXi){
String sql0 = "from YuanXi where name=?";
List yuanxi1 = super.getHibernateTemplate().find(sql0, new Object[]{yuanXi.getName()});
String sql = "from Bed where YuanXi=?";
List<Bed> bed = super.getHibernateTemplate().find(sql, new Object[]{yuanxi1.get(0)});
return bed;}}
不知道代码对不对,我的意思是Bed实体类里有一个private YuanXi yuanxi;求大神,
List<Bed> bed = super.getHibernateTemplate().find(sql, new Object[]{yuanxi1.get(0)});
可否实现查询该yuanxi里的所有bed 展开
@Repository
public class ChuangweiDao extends HibernateDaoSupport{
public List<Bed> search(YuanXi yuanXi){
String sql0 = "from YuanXi where name=?";
List yuanxi1 = super.getHibernateTemplate().find(sql0, new Object[]{yuanXi.getName()});
String sql = "from Bed where YuanXi=?";
List<Bed> bed = super.getHibernateTemplate().find(sql, new Object[]{yuanxi1.get(0)});
return bed;}}
不知道代码对不对,我的意思是Bed实体类里有一个private YuanXi yuanxi;求大神,
List<Bed> bed = super.getHibernateTemplate().find(sql, new Object[]{yuanxi1.get(0)});
可否实现查询该yuanxi里的所有bed 展开
1个回答
展开全部
我有几点要和你说:
第1:既然Bed实体类里有一个private YuanXi yuanxi了。你就没必要写两条sql语句了。
List list=this.getHibernateTemplate().find("select id,name from Bed b where b.yuanxi.name=?",这个替代问号里的内容)
我这个语句你要适当改下。首先我上面的语句是查询出宿舍的id和name出来。你可以根据自己的需要查出你要的。 还有个;b.yuanxi.name。我这是根据系的名称找的。yuanxi就是Bed里的YuanXI类的对象名。我是根据name。你也可以根据id来找。
还有个小问题。既然只有一个?号。后面就不需要再用数组。如果是string。就把字符串替代进去就行了。
第2点:要提醒你的。这得到list之后。里面放的是数组。并不是对象了。当你在action放到request域中的时候。在jsp标签可以这么取。
<c:forEach items="${list}" var="obj">
<tr>
<td>${obj[0]}</td>
<td>${obj[1]}</td>
</tr>
</c:forEach>
我稍微解释下。每循环一次就取出一个数组。比如我上面的sql语句是先查id。再查name。假设查出的第一个床位是 id是1.name叫做520。那么第一个数组里就放的是1和520.${obj[0]}就取出了1.${obj[2]}取出了520.。依此类推。
ps:你的问题是可以查询取出系里所有的宿舍。
第1:既然Bed实体类里有一个private YuanXi yuanxi了。你就没必要写两条sql语句了。
List list=this.getHibernateTemplate().find("select id,name from Bed b where b.yuanxi.name=?",这个替代问号里的内容)
我这个语句你要适当改下。首先我上面的语句是查询出宿舍的id和name出来。你可以根据自己的需要查出你要的。 还有个;b.yuanxi.name。我这是根据系的名称找的。yuanxi就是Bed里的YuanXI类的对象名。我是根据name。你也可以根据id来找。
还有个小问题。既然只有一个?号。后面就不需要再用数组。如果是string。就把字符串替代进去就行了。
第2点:要提醒你的。这得到list之后。里面放的是数组。并不是对象了。当你在action放到request域中的时候。在jsp标签可以这么取。
<c:forEach items="${list}" var="obj">
<tr>
<td>${obj[0]}</td>
<td>${obj[1]}</td>
</tr>
</c:forEach>
我稍微解释下。每循环一次就取出一个数组。比如我上面的sql语句是先查id。再查name。假设查出的第一个床位是 id是1.name叫做520。那么第一个数组里就放的是1和520.${obj[0]}就取出了1.${obj[2]}取出了520.。依此类推。
ps:你的问题是可以查询取出系里所有的宿舍。
追问
其实我发现我的问题比这个要复杂的多,你的回答我已经很满意了,可以可以要求你提供下QQ,因为我这里面有标签Manytoone,我不知道这样可不可以查到,现在在家,数据库没在我这,所以试不了
追答
QQ:2698935677.
不过我也算是起步。。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询