[Hibernate]关于ID的一个容易混淆的地方

简介: 用了这么久的Hibernate了,今天却遇到一个从未遇到的问题,幸好我思维敏捷,善于联想,才得以在短时间内发现并解决了问题。以下是具体描述。 我在HibernateDAO这个类里增加了一个方法如下: public Object getById(Class clazz, String id) throws HibernateException{    return session.

用了这么久的Hibernate了,今天却遇到一个从未遇到的问题,幸好我思维敏捷,善于联想,才得以在短时间内发现并解决了问题。以下是具体描述。

我在HibernateDAO这个类里增加了一个方法如下:

public Object getById(Class clazz, String id) throws HibernateException{ 
   
return  session.find( " from  " + clazz.getName() + "  o where o.id=? " ,id,Hibernate.STRING).get( 0 ); 

你知道,我的PO类的主键都是名为oid的。凑巧的是,有一些PO类除了具有oid属性外,还具有名为id的属性,用来表示业务编号,例如教师编号、文化程度的编号等等。这些类在使用这个方法时总报下面的异常:

java.lang.IndexOutOfBoundsException: Index:  0 , Size:  0  

郁闷了半个小时,终于想到,会不会是查询语句中的o.id,Hibernate认为这里的id表示的是主键oid呢?在debug里把参数按oid的值一改,发现果然如此!

解决方法:暂时还不知道有什么方法能起到转义的作用,不过id这个属性确实有点容易产生歧义,还是改名为code吧。

本文转自博客园八进制的博客,原文链接:[Hibernate]关于ID的一个容易混淆的地方,如需转载请自行联系原博主。

相关文章
|
XML Java 数据库连接
2021-5-13讲课内容hibernate主键id映射_XML方式
概述 项目结构 Student类 hibernate.cfg.xml log4j.properties Student.hbm.xml StudentTest类 理论 常用的五种方式 1. increment: 2. identity主键自增 3.sequence 序列 4. native 5. uuid
223 0
2021-5-13讲课内容hibernate主键id映射_XML方式
|
算法 Java 关系型数据库
hibernate id属性 generator class=""详解
原文来自:http://blog.csdn.net/yufaw/article/details/7680403 “assigned”     主键由外部程序负责生成,在   save()   之前指定一个。
1027 0