我正在eclipse中处理hibernate。我正在执行简单的'From'查询。这是代码
List list = sess1.createQuery("From Myview").list();
System.out.println("Records Found :"+list.size());
Iterator<Myview> i = list.iterator();
while(i.hasNext())
{
Myview nS = i.next();
System.out.println(nS.getFirstName()+" -- "+nS.getLastName()+" -- "+nS.getAddressLine1());
}
问题是list.size()返回11,这是正确的,因为我的表中有11条记录。 但是当我在while循环中时,相同的记录显示多次,并且循环在第11次迭代后终止。这是我的输出
这就是我想要的
现在您可以看到,在我的输出中,记录显示11次,但同一记录会一次又一次地重复。我需要的是后面图像中显示的输出。
请在这方面帮助我,因为我是hibernate的新手
答案 0 :(得分:22)
当您的hbm文件中的id元素不是数据库表中的PK时,会发生这种情况。 Hibernate将所有具有相同ID的行视为同一对象。
将id元素更改为指向PK列,或者使用composite-id元素,以防表中只有复合主键。
答案 1 :(得分:0)
您确定表格填写正确吗? 试试:
List list = sess1.createQuery("SELECT * FROM Myview").list();
此外,您从视图中获取此列表?你确定你正确地看了这个观点吗?
答案 2 :(得分:0)
您应该使用distinct关键字来过滤相同的结果。
答案 3 :(得分:0)
您的实体Myview必须实现java.io.Serializable接口
答案 4 :(得分:0)
如果您在映射中有关联,请检查是否fetch=FetchType.EAGER
。如果是,则使用其他获取类型或fetchMode。
答案 5 :(得分:0)
将Hibernate返回的对象放到LinkedHashSet并返回LinkedHashSet。