Java Hibernate不保存对象,即使日志中没有任何错误

Java Hibernate不保存对象,即使日志中没有任何错误,java,hibernate,spring-mvc,hibernate-mapping,spring-annotations,Java,Hibernate,Spring Mvc,Hibernate Mapping,Spring Annotations,我有一张db格式的桌子。创建了一个pojo类以将类实例映射到表。我的班级结构是 @Entity @Table(name = "example") class example { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "ID") int id; @Column(name = "SLOT_ID")

我有一张db格式的桌子。创建了一个pojo类以将类实例映射到表。我的班级结构是

   @Entity
    @Table(name = "example")
    class example {
     @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID")
        int id;
        @Column(name = "SLOT_ID")
        int slot_id;
        @Column(name = "SLOT_DATE")
        String slot_date;
        @Column(name = "HOTEL_ID")
        String hotel_id;
        @Column(name = "ROOM_TYPE_ID")
        String room_type_id;
        @Column(name = "CREATE_DATE")
        String create_date;
        @Column(name = "UPDATE_DATE")
        String update_date;
        @Column(name = "SLOT_PRICE")
        Double slot_price;
        @Column(name = "AVAILABLE_ROOMS")
        Integer available_roooms;

//rest have getter and setter method }
Hibernet提交部分

  public void save(Example example) {

        Session session = null;
        try {
            log.info( example.toString());
            session = this.sessionFactory.openSession();
            Transaction tx = session.beginTransaction();
            session.persist(example);
            tx.commit();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            session.close();
        }
    }
在日志中我得到了这个日志

Hibernate: insert into example(AVAILABLE_ROOMS, CREATE_DATE, HOTEL_ID, ROOM_TYPE_ID, SLOT_DATE, SLOT_ID, SLOT_PRICE, UPDATE_DATE) values (?, ?, ?, ?, ?, ?, ?, ?)
我能够从同一个表中获取数据,这里是代码快照`

session = this.sessionFactory.openSession(); 
Criteria cr = session.createCriteria(Example.class); cr.add(Restrictions.eq("id", id)); List results = cr.list();
 if(results.size()>0) 
return mapper.writeValueAsString(results.get(0)); //id is auto //incremented in table`

我在日志中没有看到任何错误,但当我在数据库中检查时,没有插入任何数据。有没有线索我遗漏了什么

使用此代码并测试一次

public void save(Example example) {
    Session session = null;
    Transaction tx=null;
    try {
        log.info( example.toString());
        session = this.sessionFactory.openSession();
        tx = session.beginTransaction();
        session.persist(example);
        tx.commit();

    } catch (Exception e) {
        e.printStackTrace();
    } finally {

     if (!tx.wasCommitted()) {
     tx.rollback();
     }//not much doing but a good practice
     session.flush(); //this is where I think things will start working.
     session.close();
    }
}

关闭前调用flush的好理由是

我认为您必须使用session.save()而不是session.persist(),或者您必须在事务结束时使用flush,正如Viraj所指出的,也请参阅本文


您是如何创建会话工厂的?嗨,John,我已经将会话工厂定义为一个bean,然后它与implementation@autowired public void setSessionFactory(SessionFactory SessionFactory){this.SessionFactory=SessionFactory;}自动连接,我已经检查过了,我正在获取SessionFactory的实例Hi John,我可以从同一个表中获取数据,这里的代码是snap session=this.sessionFactory.openSession();Criteria cr=session.createCriteria(Example.class);cr.add(Restrictions.eq(“id”,id));列表结果=cr.List();if(results.size()>0)返回mapper.writeValueAsString(results.get(0))//id在tableHi Viraj中自动//递增,我已经尝试过了,但没有成功。我也试过,还有一件事是。创建一个没有任何自动校正字段的新表,然后插入虚拟数据(Hibernate:insert-into-person(name,id)值(?,))。我检查了插入是否成功,所以我认为自动递增字段可能是问题所在。如果你也这么认为,那么你能给我建议一些解决这个问题的方法吗。db需要时间来反映插入的数据:-)@Nand是的,它可能需要时间,而且休眠也需要时间来刷新它。。很高兴它起作用了。。如果我的解决方案有效,您可以接受这个答案…-)@是的,我们可以!!只要提到这里的stackoverflow引用,它就会提醒我..嗨,pappu,我使用的是“session.persist”,还测试了viraj提供的不起作用的代码。我认为表中定义的自动递增字段有问题。你能告诉我怎么解决这个问题吗。