String parameters[] = {user.getId()+""};
List list = HibernateUtil.query("from User where id not in(?)", parameters);
public static List query(String hql,String parameters[]){
List list = null;
Transaction ts = null;
Session session = HibernateUtil.openSession();
try {
ts = session.beginTransaction();
ts.begin();
Query query = session.createQuery(hql);
for(int i=0;i<parameters.length;i++){
query.setParameter(i, parameters[i]);
}
list = query.list();
出现错误提示 java.lang.String cannot be cast to java.lang.Integer
今天碰到个自我感觉奇怪的问题,在编写where条件时添加了or,然后用括号把or后面的内容给括起来了,但是hql解析后生成的sql发现没有括号了,开始的时候坚定的认为生成的sql不对,各种尝试,甚至都怀疑Hibernate出现Bug了,后来怀疑or是不是用的不对,不能这么干,后来又怀疑is not null 等等一切,最后同事从网上查到发现,and的优先级要高于or,之后就没有之后了......
答案就在这里:Hibernate HQL 括号问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。
哥们,怎么感觉你的in查询好奇怪啊
参考这篇文章吧
http://blog.csdn.net/liyanhui1001/article/details/7301764
你数据库里的id 是数值类型吧?java.lang.String cannot be cast to java.lang.Integer 意思是String 类型不能强转成Integer
把String parameters[] = {user.getId()+""};改成Integer parameters[] = {user.getId()+""};