丶朔 2016-05-18 03:31 采纳率: 100%
浏览 1729
已采纳

hibernate主键生成策略-为什么我的程序只有native方式生效(注解)

我想采用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();
}
}

  • 写回答

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是什么原因呢?