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: select USER_ID.nextval from dual
按照正常情况来说,应该是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。
后续如果还有问题,继续在此篇文章上更新
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值