Hibernate+Oracle使用序列
最近自己搞一个项目,使用的是S2SH+Oracle其中模型中使用了Oracle的序列,Hibernate模型中使用序列的方法如下:
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "userID") @SequenceGenerator(name = "userID", allocationSize = 1, initialValue = 1, sequenceName = "USER_ID") public Integer getUserID() { return userID; }
其中USER_ID为一个已经存在序列(该序列命名不规范,还望大家注意)。
在使用序列的时候,出现了很多错误,现在总结一下:
1、首先是不入库,Hibernate始终只打印如下一句SQL
Hibernate:selectUSER_ID.nextvalfromdual
按照正常情况来说,应该是Hibernate查询的序列的下一个值之后,直接set到UserID中的,然后再进行Insert操作,但是此处,Hibernate始终不进行insert操作,后面分析,是由于在进行session.save(user);时,未开启失误,而且保存之后,也没有进行事物的commit操作,因此修改代码,添加上事物操作(目前需手动管理失误,后续通过AOP来管理)
Session session = getSession(); Transaction tr=session.beginTransaction(); try { session.save(user); tr.commit(); session.close(); session.flush(); } catch (HibernateException e) {
2、进行上述操作之后,还是不能入库,而且查询的时候始终提示语法错误,后面仔细排查发现,原来是数据库用户配置错啦.....太不仔细了!
2、进行查询时,提示如下异常org.hibernate.PropertyAccessException,在网上查了发现是由于模型中,定义了Int型,而数据库中存在为空的场景,所以需要将模型中所有为Int的修改为Integer。
后续如果还有问题,继续在此篇文章上更新
相关推荐
lklong 2020-11-22
oraclemch 2020-11-06
shilukun 2020-10-10
周嘉笙 2020-11-09
iilegend 2020-10-19
EricRay 2020-10-16
zhuzhufxz 2020-09-16
dataminer 2020-08-17
bfcady 2020-08-16
Hody 2020-08-16
FightFourEggs 2020-08-16
数据库设计 2020-08-16
Seandba 2020-08-16
Omega 2020-08-16
zjyzz 2020-08-16
yanghuatong 2020-08-16
ktyl000 2020-08-16
dbasunny 2020-08-16