zoukankan      html  css  js  c++  java
  • [Hibernate]关于ID的一个容易混淆的地方

    用了这么久的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吧。

  • 相关阅读:
    使用JDBCTemplate执行DQL/DML语句
    spring中JDBCTemplate的简单应用
    Druid数据库连接池工具类
    Same Tree
    Remove Duplicates from Sorted List
    Length of Last Word
    Remove Element
    Remove Duplicates from Sorted Array
    java-StringBuffer更改功能
    java-StringBuffer的删除功能
  • 原文地址:https://www.cnblogs.com/bjzhanghao/p/28064.html
Copyright © 2011-2022 走看看