Hibernate不在表中保存数据,而是返回调用session.get()的状态

Hibernate不在表中保存数据,而是返回调用session.get()的状态,hibernate,Hibernate,我试图将一个对象保存到数据库中,但它没有保存到数据库中 UserDetails.java import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="USER_DETAILS")

我试图将一个对象保存到数据库中,但它没有保存到数据库中

UserDetails.java

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="USER_DETAILS")
public class UserDetails {

    @Id @GeneratedValue()
    @Column(name="USER_ID")
    private int userId;

    @Column(name="USER_NAME")
    private String userName;

    //...getter and setters

}
public class App {

    public static void main(String[] args) {
        UserDetails user = new UserDetails();
        user.setUserName("abc");

        SessionFactory factory = new Configuration().configure().buildSessionFactory();
        Session session = factory.openSession();

        Object o = session.save(user);
        System.out.println("User saved with id - " +o);
        System.out.println("HashCode of session 1st "+session.hashCode());
        session.close();

        session = factory.openSession();
        System.out.println("HashCode of session 2nd "+session.hashCode());

        UserDetails user1 =(UserDetails)session.get(UserDetails.class,Integer.valueOf(o.toString()));
        System.out.println(user1.getUserName());

        session.close();



    }
}
App.java

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="USER_DETAILS")
public class UserDetails {

    @Id @GeneratedValue()
    @Column(name="USER_ID")
    private int userId;

    @Column(name="USER_NAME")
    private String userName;

    //...getter and setters

}
public class App {

    public static void main(String[] args) {
        UserDetails user = new UserDetails();
        user.setUserName("abc");

        SessionFactory factory = new Configuration().configure().buildSessionFactory();
        Session session = factory.openSession();

        Object o = session.save(user);
        System.out.println("User saved with id - " +o);
        System.out.println("HashCode of session 1st "+session.hashCode());
        session.close();

        session = factory.openSession();
        System.out.println("HashCode of session 2nd "+session.hashCode());

        UserDetails user1 =(UserDetails)session.get(UserDetails.class,Integer.valueOf(o.toString()));
        System.out.println(user1.getUserName());

        session.close();



    }
}
日志:

Hibernate: insert into USER_DETAILS (USER_ID, USER_NAME) values (default, ?)
Hibernate: values identity_val_local()
User saved with id - 1
HashCode of session 1st 9299042
HashCode of session 2nd 12206609
Hibernate: select userdetail0_.USER_ID as USER1_0_0_, userdetail0_.USER_NAME as USER2_0_0_ from USER_DETAILS userdetail0_ where userdetail0_.USER_ID=?
abc
我没有使用事务,我知道如果我将session.save代码放在session.beginTransaction()和session.getTransaction().commit()中,数据将保存在数据库中。但是当我也在做一个session.get时,我在做session.save()时得到了一个ID。我如何取回这个对象

如果是一级缓存,那么如何。。因为我正在关闭会话并打开新会话。我还没有配置任何二级缓存

请提供有价值的输入。

可能重复的