Hibernae的一个小问题。。。

问题描述

<many-to-one not-null="true" column="report_type_id" name="reportType" class="net.gbicc.csrc.console.model.ReportType"/>建了一个many-to-one 的关系。 <hibernate-mapping> <class dynamic-update="true" table="csrc_date_limit" name="net.gbicc.csrc.console.model.DateLimit" dynamic-insert="true"> <id type="string" column="date_limit_id" length="32" name="idStr"> <generator class="uuid"/> </id> <property name="reportYear" not-null="true" length="4" type="string" column="report_year"/> <many-to-one not-null="true" column="report_type_id" name="reportType" class="net.gbicc.csrc.console.model.ReportType"/> <property name="startDateTime" not-null="true" type="calendar" column="start_datetime"/> <property name="endDateTime" not-null="true" type="calendar" column="end_datetime"/> <property name="createDateTime" not-null="true" type="calendar" column="create_datetime"/> <property name="updateDateTime" not-null="true" type="calendar" column="update_datetime"/> </class></hibernate-mapping>  DateLimit dateLimit = new DateLimit();dateLimit.setReportYear(reportYear);dateLimit.setReportType(new ReportType(reportTypeId));dateLimit.setStartDateTime(DateTimeUtils.strDateTime2Calendar(startDateTime));dateLimit.setEndDateTime(DateTimeUtils.strDateTime2Calendar(endDateTime));  dateLimitSave = dateLimitManager.save(dateLimit); //插入到数据库 后台sql语句都打出来了System.out.pringtln(dateLimitSave.getReportType().getReportDesp());打出来是null 请问哪位高手跟我解释一下? 为什么没值。  问题补充:<div class="quote_title">Wind_ZhongGang 写道</div><div class="quote_div"><div class="quote_title">引用</div><div class="quote_div">dateLimit.setReportType(new ReportType(reportTypeId));</div><br /><br />你new的ReportType根本没有存进数据库中,也就是说在数据库不存在DateLimit对应的ReportType,在many-to-one上加上cascade="save-update"属性。</div><br />您好,进了数据库。你刚刚说的我也配置了,主要是延迟加载不起作用?

解决方案

引用恩 写在save之后。。看样子只能查了。。当时没想那么多。。。。谢谢你。。让我一下子想通了。。。我还以为是哪里没配置好。。不是配置的问题,如果你想在缓存中拿东西也必须是在同一个session中才行,因为session关闭了一级缓存也就清空了,你想拿也不行了。
解决方案二:
额 其实我还是建议再查的或者前面说的 先读取ReportType 。。。。从代码以后的维护上来说。。。不应该把查数据放到save方法里去的。。。其实也就几句代码的 =。=
解决方案三:
引用是的。。save提交后?事物就关闭了。。session也换了?不是同一个session了?是的吧?嗯,是这样的。
解决方案四:
引用我就是不想多写这代码?我想直接从缓存中拿你想从缓存中拿那也得你的这几步操作是在同一个session中才行三。
解决方案五:
引用dateLimitManager.save(dateLimit);写在save方法里面?如果你不想这样做,那我的建议是再查找出来吧
解决方案六:
你可以不用new直接用ReportType的DAO ReportType type = ReportTypeDAO.findById(reportTypeId); 先把ReportType取出来再setdateLimitSave.setReportType(type );
解决方案七:
引用哦 我懂了。。new的时候,给这对象已经指定了一引用。。意思就是这样的情况,没办法解决哦。我不理解你为什么要在save后返回这个对象呢?如果两步操作是处在同一个session时,我觉得是可以的,因为这时dateLimit已经从瞬时态转为持久态了,如果你事务是只加在save上的话,那我想是不可以的。
解决方案八:
dateLimit.setReportType(new ReportType(reportTypeId)); 就是这里的ID传进去的结论应该就是还是dateLimitSave还是旧的那个 没有返回新的值吧
解决方案九:
引用 哦。。。但是它主键ID都有了?因为你new的时候构造函数传进去的。。。。
解决方案十:
我保存完之后,直接用的保存的对象点的。System.out.pringtln(dateLimitSave.getReportType().getReportDesp());你试试getID看看哟没有值System.out.pringtln(dateLimitSave.getReportType().getReportTypeId());我觉得直接save返回值有问题 一般save操作不都是void 没有返回值的嚒。。。
解决方案十一:
引用我没查。如果查了,肯定会出来。我保存完之后,直接用的保存的对象点的。那我想很有可能就是你这个dateLimitSave还是你保存前的状态,这时reportDesp根本没有值。
解决方案十二:
引用dateLimitSave = dateLimitManager.save(dateLimit);你save后返回的这个dateLimitSave是传进去的dateLimit还是保存以后又查找了一次出来的呢?
解决方案十三:
引用主要是延迟加载不起作用?应该不是延迟加载,要是延迟加载的话会抛出exception吧另外 试试加上<many-to-one not-null="true" column="report_type_id" name="reportType" class="net.gbicc.csrc.console.model.ReportType" inverse="false" cascade="save-update"/>
解决方案十四:
引用System.out.pringtln(dateLimitSave.getReportType().getReportDesp());这是在哪执行的?
解决方案十五:
引用System.out.pringtln(dateLimitSave.getReportType().getReportDesp());打出来是null 请问哪位高手跟我解释一下? 为什么没值。 那请问你这步是哪里执行的呢?和前面你构造DateLimit和保存DateLimit是在一个方法中还是什么?
其他方案:
你确定你有级联插入?dateLimit.setReportType(new ReportType(reportTypeId));这个不代表ReportType就被插进去了吧 你看看这个表里有没数据请搜索关键字 “cascade inverse 级联”
其他方案:
引用您好,进了数据库。你刚刚说的我也配置了,主要是延迟加载不起作用?那你查看了数据库中对应的那个reportType的reportDesp值了吗?你这new ReportType(reportTypeId),也没见你设置了reportDesp的值?
其他方案:
引用dateLimit.setReportType(new ReportType(reportTypeId));你new的ReportType根本没有存进数据库中,也就是说在数据库不存在DateLimit对应的ReportType,在many-to-one上加上cascade="save-update"属性。

时间: 2025-01-30 10:59:48

Hibernae的一个小问题。。。的相关文章

前端-用php和mysql为我们实验室建立一个小网站,请问有没有合适的模板源码?

问题描述 用php和mysql为我们实验室建立一个小网站,请问有没有合适的模板源码? 自己在chinaz上下载了几个,但是不尽人意,希望有路过的朋友能够提供帮助,只有建立一个链接数据库的小网站,不用线上上运行,所以模板不用太复杂,前端有了就好,谢谢 解决方案 你应该说明网站用途,根据用途可以决定里的要用什么,只链接数据库使用phpadmin就好 解决方案二: 这样谁说你更想要的是前端的页面

js浏览器-javascript中的一个小问题(浏览器问题)

问题描述 javascript中的一个小问题(浏览器问题) 求助 javascript中的一个小问题< html> <head> <title>Ajax 简单的服务器请求 <script type=""text/javascript""> var xmlobj; function CreateXMLHttpRequest() { if(window.ActiveXObject) //如果当前浏览器支持ActiveXOb

音频-我用java写了一个小游戏,想插入背景音乐但不太会,求指教

问题描述 我用java写了一个小游戏,想插入背景音乐但不太会,求指教 package text; import java.io.*; import javax.sound.sampled.*; public class text { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个实例 AePlayWave apw = new AePlayWave("G:\照片\Sleep Awa

结果是什么啊-一个小程序,求解答啊

问题描述 一个小程序,求解答啊 在别人文章里看到的程序 程序的输出结果是什么,why? #include int main() { int a[5] = {1,2,3,4,5}; int p = (int)(&a + 1); printf("%d, %dn", *(a + 1), *(p -1)); } 解决方案 int a[5] = {1,2,3,4,5}; int* p = (int*)(&a + 1); printf("%d, %dn", *(

jquery-jQuery一个小知识点,求教

问题描述 jQuery一个小知识点,求教 本来不想麻烦大神的,今天看视频教程$().ready(function(){ }); 和$(document).ready(function(){ });我百度了没有明确结果,希望比较懂Js的大神告诉我一声,这两个是不是一样的 解决方案 两者效果是一样的,当没有写document的时候,默认就是选中document$().ready(function () { } )与javascript中的onload=function ( ){ };效果也是一样的

vb编程-用vb。net设计一个小游戏

问题描述 用vb.net设计一个小游戏 我想实现以下功能: 当单击某一个按钮时,如果其他按钮的颜色和这个按钮相同,则让这两个按钮消失,该怎么判断那个按钮是否和本按钮的颜色相同

ttl-关于ip归属地的一个小问题

问题描述 关于ip归属地的一个小问题 IP归属地 美国 内华达州克拉克县亨德森市Enzu ip归属地 可以看出来是 内华达州的,但是enzu的怎么看出来的? 能不能在ping的时候不出现这个 "enzu" 解决方案 两个可能,一个是网站为了防止非法复制和盗取,在后面加上的随机文字 一个是真的有Enzu,不知道是不是一个地名 你可以用正则表达式过滤. 解决方案二: 那就是数据库里记录的,这个就好比根据一个电话,你能知道大概在哪个城市,但是公安局可以知道开户的户主叫什么. 这不是技术问题.

从美容店出发&amp;nbsp;一个小女子的网商创业故事

98年从湖南大学毕业后,学财经专业的我分配到了一家国企,一向知足常乐的我没有想到过有一天会走上创业的道路.去年以来,单位效益日益变差,工作压力也日益增加,加上半官僚的组织机构,论资排辈.平均主义等现象非常严重,年轻人很难有出头的机会.有时想想,作为一名业务骨干,自己在工作中付出的努力和汗水不少,自己智商也不低,如果能把这份努力和智慧投到自己开创的事业中去,肯定成就不会比在单位干的要差!     我选择的第一个创业项目是开一家美容院公司,因为本人一向都有做美容护理的习惯,感觉自己脾气也挺好,亲和力

php反序列unserialize的一个小特性

这几天wordpress的那个反序列漏洞比较火,具体漏洞我就不做分析了,看这篇吧http://drops.wooyun.org/papers/596,你也可以去看英文的原文http://vagosec.org/2013/09/wordpress-php-object-injection/. wp官网打了补丁,我试图去bypass补丁,但让我自以为成功的时候,发现我天真了,并没有成功绕过wp的补丁,但却发现了unserialize的一个小特性,在此和大家分享一下.   1.unserialize(