java-hibernate程序运行现多出一个记录

问题描述

hibernate程序运行现多出一个记录
person2 和 emails 一对多。

List list = session.createQuery( select p from Person2 p left join fetch p.emails e ""                    + "" where e.email like '%@yahoo.com.cn' "").list();                              **//对应的sql语句执   行正常 ,调试看到 list取出来多出一条记录**    // 输出用户及其所有的用户    for (Person2 p : (List<Person2>) list) {        System.out.println(""Person: "" + p.getName()+ ""-----""+ p.getId());        for (Email e : p.getEmails()) {            System.out.println(""tEmail: "" + e.getEmail());    ** //打印记录如下**        }    }

打印结果: 最后一条19的记录怎么多出一个Email: 163@163.com
Person: Jane-----8
Email: yahoo@yahoo.com.cn
Person: Jane-----9
Email: yahoo@yahoo.com.cn
Person: Jane-----10
Email: yahoo@yahoo.com.cn
Person: Jane-----15
Email: yahoo@yahoo.com.cn
Person: Jane-----16
Email: yahoo@yahoo.com.cn
Person: Jane-----19
Email: yahoo@yahoo.com.cn
Email: 163@163.com

解决方案

你的emails表中是否存在多个相同主键的数据

解决方案二:
不可能相同,主键都是自增长字段。

解决方案三:
person表是否存在空记录

解决方案四:
left join 使用这个关键字的时候,就会查出多余的一些信息,主要还是表里有空值造成

解决方案五:
这个可能是查询方式的问题,跟hibernate没关系,你可以单独拿出你的查询语句在客户端测试一下

解决方案六:
可能是你在查询时使用了 左外连接,你看一下左外连接就会明白了

解决方案七:
和左外连接没关系。改成inner join也是这样的

解决方案八:
sql语句执行,记录对的

时间: 2024-10-03 02:23:01

java-hibernate程序运行现多出一个记录的相关文章

vc++编程问题-vc++写好的程序运行出错 弹出一个对话框

问题描述 vc++写好的程序运行出错 弹出一个对话框 for information on how you program can cause an assertion failure,see the Visual C++ documentation on asserts. 解决方案 点击重试按钮,打开编译器,查看出错的代码位置 解决方案二: 你的程序有指针的错误.不要直接运行程序,而是f10调试程序,遇到错会停下来,然后看你错误的行,检查指针.

图片-JAVA在当前程序界面上显示出一个对话框,关闭后当前程序界面乱了。

问题描述 JAVA在当前程序界面上显示出一个对话框,关闭后当前程序界面乱了. 这是刚运行后的界面点击确定后成这样了 刚下面的回答看不懂啊 我新手. 圈着的是那个弹出对话框的的代码..放到RigisterFrame注册界面内的. 解决方案 好像没有设定页面刷新吧.错误提示代码以后,加个页面刷新试试. 解决方案二: //a代表教徒,b代表非教徒 public class Test { /** Enter Content. @author zhangjing @date 2015-5-19 @para

调试-在测试一个tesseract程序时logcat抛出一个错误无法解决,请教各位大侠

问题描述 在测试一个tesseract程序时logcat抛出一个错误无法解决,请教各位大侠 这是logcat的信息 02-09 12:45:12.405: D/MainActivity ...(2210): begin>>>>>>> 02-09 12:45:12.409: D/nimei(2210): ---in ocr() before try-- 02-09 12:45:12.409: V/MainActivity ...(2210): not in the

如何在程序运行时动态修改一个类的属性的get;set;?

问题描述 publicclassMyTestClass{privatestring_name;publicstringName{get{returnstring.Format("名字:{0}",_name);}set{value=value??string.Empty;_name=value.Substring(0,4);}}}publicstaticvoidMain(){DynamicMethodmethod=newDynamicMethod("Set_Name"

C/S环境下Java应用程序运行过程讲解

客户机/服务器在分布处理过程中,使用基于连接的网络通信模式.该通信模式首先在客户机和服务器之间定义一套通信协议,并创建一Socket类,利用这个类建立一条可靠的链接:然后,客户机/服务器再在这条链接上可靠地传输数据.客户机发出请求,服务器监听来自客户机的请求,并为客户机提供响应服务.这就是典型的"请求--应答" 模式.下面是客户机/服务器的一个典型运作过程: 1.服务器监听相应端口的输入: 2.客户机发出一个请求: 3.服务器接收到此请求: 4.服务器处理这个请求,并把结果返回给客户机

关于Java服务器程序运行的问题

问题描述 以上是整个工程的文件列表,没有报错.运行主程序后出现以下错误:本人是刚接触JavaWeb,只运行过简单的JSP程序,对于这个相对较大的工程,不知道应该怎么运行.对于上面的错误,在查询相关资料后还是没有解决.希望各位前辈略加指点! 解决方案 解决方案二:数据库是本地的还是远程的?本地的话看看你mysql服务启动了没,确认一下数据库的URL是否正确,端口号有没有改动什么的.解决方案三:数据库没连上?看看你本地能连上数据库不解决方案四:数据库启动没解决方案五:上图应该是说明已经连上了服务器吧

程序运行时出现的一个问题,求助

问题描述 //做一个简单的抽数字的例子.<?xmlversion="1.0"encoding="utf-8"?><mx:ApplicationapplicationComplete="aa"xmlns:mx="http://www.adobe.com/2006/mxml"layout="absolute"><mx:Buttonx="124"y="2

工业程序-程序运行弹出用户定义断点窗口问题

问题描述 程序运行弹出用户定义断点窗口问题 我们公司的程序运行时弹出一个窗口.标题是Dms.HMI has encountered a user-defined breakpoint.不知道在程序哪个地方定义的断点.怎样取消掉.程序是用Visual Stidio 2005写的,Debug版本运行,Windows XP系统. 解决方案 估计是盗版软件破解不完全,程序中下了坑,触发int3中断. 解决方案二: 反正是公司用,该花钱花钱.就算不愿意花大钱,花个几万找个高手破解的好一些也没问题啊.

如何创建虚拟机下的可运行计算密集型的Java应用程序

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 通过Windows Azure,你就可以使用一个虚拟机来处理计算密集型任务,举例来说,一个虚拟机可以处理任务,并交付结果给客户机或移动应用程序.整篇文章阐述的就是让你了解怎样创建一个可运行计算密集型的Java应用程序的同时被另一个Java应用程序所监视的虚拟机.如果你知道如何创建Java控制台应用程序.导入库到你的Java应用程序及生成一个Java存档(JAR).假