hibernate判重插入数据库的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:49:24
用hibernate存库的时候,我用下面的语句判断是否数据库中有要存的数据
Object obj = session.createQuery("from usptotest where pn = " + u.getPn());
(或Object obj = session.createQuery("from usptotest where pn = " + u.getPn()).uniqueResult();)
if (obj != null) {
。。。
}
(或if (obj != "") {
。。。
})
其中pn是表的主键,varchar型,因为不仅有数字,所以没有设成int型,

但是执行后提示Object obj = session。。。这行语句有错误:
Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException
at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:35)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:74)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hi

1,异常问题.少了antlr-2.7.5H3.jar包,请导入该包,自己找找吧,eclipse下应该有,网上也应该有下
2,你的判断重复的逻辑,createQuery返回的是一个List,这个List只要有执行就不会是null,只是这个list的size()可能会是0,所以应该这么做逻辑

List list = session.createQuery("from usptotest where pn = " + u.getPn());
if(list.size()>0)
就存在那个数据了