我想采用uuid主键策略,但是多次各种尝试都不成功。我是通过往数据库插入数据测试的。重点是使用native能正常插入数据,而使用uuid就不行,主要原因是整个程序也不报错,就是运行了,看起来就像是跳过执行插入语句一样,实际上是执行到了插入方法的,也没有堆栈信息什么的可参考。代码如下:
@Id
@GeneratedValue (generator = "paymentableGenerator" )
@GenericGenerator (name = "paymentableGenerator" , strategy = "uuid" )
@Column(unique=true)
private String userId;
----------------------------------------------------------------------------------
@Test
public void testAddTest() {
com.liuz.ssh.bean.Test test = new com.liuz.ssh.bean.Test();
//test.setUserId("123");
test.setGender(1);
test.setPassword("123");
test.setUsername("1232");
try {
testService.addTest(test);
} catch (Exception e) {
e.printStackTrace();
}
}
hibernate主键生成策略-为什么我的程序只有native方式生效(注解)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 丶朔 2016-05-18 06:20关注
说到底就是自己对hibernate不够了解,经过多次尝试,最终发现必须通过提交事务才能将数据保存到数据库,当然可以设置事务为自动提交什么的,这些方式大家自己尝试,这里的解决办法就是:提交事务 提交事务 提交事务;
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "asign")
@Column(unique=true)
private String userId;
//--------------------------------------------------------
@Test
public void testAddTest() {
@SuppressWarnings("resource")
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:config\applicationContext.xml");
SessionFactory sessionFactory = context.getBean("sessionFactory", SessionFactory.class);
Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction(); com.liuz.ssh.bean.Test test = new com.liuz.ssh.bean.Test(); test.setUserId("123"); test.setGender(1); test.setPassword("123"); test.setUsername("1232"); try { session.save(test); //testService.addTest(test); } catch (Exception e) { e.printStackTrace(); } tx.commit(); session.clear(); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料
- ¥15 使用R语言marginaleffects包进行边际效应图绘制
- ¥20 usb设备兼容性问题
- ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
- ¥15 安装svn网络有问题怎么办
- ¥15 Python爬取指定微博话题下的内容,保存为txt
- ¥15 vue2登录调用后端接口如何实现
- ¥65 永磁型步进电机PID算法
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?