关于hibernate中对数据库的操作取值问题

J2EE 码拜 10年前 (2015-04-05) 1391次浏览 0个评论

两个表bloguser和article表,字段如下
bloguser表:
关于hibernate中对数据库的操作取值问题
article表:
关于hibernate中对数据库的操作取值问题
其中article表通过bloguserid绑定bloguser表
通过hibernate反向生成po对象,现在在dao层有readArticle方法
关于hibernate中对数据库的操作取值问题
通过service层封装后,在action有方法readarticle方法
关于hibernate中对数据库的操作取值问题
我是想在jsp页面中通过structs的set标签获取到request中存进去的article中的bloguser中的username字段属性,但取不出来,但是article中的title,content和pubtime这些非对象属性能取出,我就纳闷了,难道不能获取对象中的对象中属性?
关于hibernate中对数据库的操作取值问题

关于hibernate中对数据库的操作取值问题
在补一张运行结果图,我想要的作者值就一直取不出来,其他就有
关于hibernate中对数据库的操作取值问题
关于hibernate中对数据库的操作取值问题
10分
<set name=”article” ……..
name换成var或id再试试
关于hibernate中对数据库的操作取值问题
引用 2 楼 hymwrj1 的回复:

<set name=”article” ……..
name换成var或id再试试

换了,不行

关于hibernate中对数据库的操作取值问题
引用 3 楼 shuhong01 的回复:
Quote: 引用 2 楼 hymwrj1 的回复:

<set name=”article” ……..
name换成var或id再试试

换了,不行

不用set,直接#request.articleid.title  
#request.articleid.bloguser.username

排除下set标签的问题。这样还不行,再把request换成session
包括action中把数据放到session,和页面用#session去取
反正一个一个的排除吧

关于hibernate中对数据库的操作取值问题
引用 4 楼 hymwrj1 的回复:
Quote: 引用 3 楼 shuhong01 的回复:
Quote: 引用 2 楼 hymwrj1 的回复:

<set name=”article” ……..
name换成var或id再试试

换了,不行

不用set,直接#request.articleid.title  
#request.articleid.bloguser.username

排除下set标签的问题。这样还不行,再把request换成session
包括action中把数据放到session,和页面用#session去取
反正一个一个的排除吧

我调试过,在dao里去看article里的值,那个bloguser对象那个里的值都是空的,应该不是标签和request里的问题,可能是hibernate关于多对一关系默认不拿出关系值,刚才逛论坛发现有人说这个

关于hibernate中对数据库的操作取值问题
引用 2 楼 hymwrj1 的回复:

<set name=”article” ……..
name换成var或id再试试

我刚刚把article的hibernate配置文件里把bloguser字段的属性里加个lazy=”false”,就可以了,不知道会不会有什么后遗症

关于hibernate中对数据库的操作取值问题
50分
article与bloguser建立了外键关联关系,默认设置了懒加载,这时在事务范围之内,可以get出来,但JSP页面超出了事务边界就不行了(因为session已经关闭了),解决办法是:
1、按楼主做的改为实时加载,没有什么后遗症,但性能上稍有开销;
2、在事务范围内手动get 出来;
3、在web层加上一个OpenSessionInViewFilter工具类解决。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于hibernate中对数据库的操作取值问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!