Hibernate session.get()始终返回null

时间:2015-07-22 13:18:18

标签: java hibernate

@Entity
@Table(name = "T019_STAFF_PROFILE")
public class UserDetails implements Serializable
{
    private static final long   serialVersionUID    = -723583058586873479L;

    @Id
    @Column(name = "STAFF_ID", columnDefinition="CHAR(8)")
    private String              loginId;

    @Column(name = "PASSWORD", columnDefinition="CHAR(8)")
    private String              password;

    @Column(name = "FIRST_NAM")
    private String              firstName;

    @Column(name = "LAST_NAM")
    private String              lastName;

    @Column(name = "BUS_OG_CD" , columnDefinition="CHAR(3)")
    private String              profile;
public UserDetails getLoginDetails(String loginId)
    {
        UserDetails object =(UserDetails)sessionFactory.getCurrentSession().get(UserDetails.class, loginId);
        return object;
    }

4 个答案:

答案 0 :(得分:0)

检查数据库以查看该值是否确实存在于数据库中。

SELECT * FROM T019_STAFF_PROFILE WHERE STAFF_ID = <the value of **loginId**>

答案 1 :(得分:0)

对于Time,创建了一个具有8个字符的临时用户,然后尝试通过休眠访问同一个用户。我能够获取记录。

  1. @Id @Column(name =&#34; STAFF_ID&#34;,columnDefinition =&#34; CHAR(8)&#34;) private String loginId;

    这是我的列定义。我有什么需要申报的吗?

答案 2 :(得分:0)

找到一些有趣的东西。如果方法错误,请纠正我。

由于我的db列声明为CHAR(8),要休眠,我应该总是传递8个char来获得结果。

因此,如果您的STAFF_ID为3个字符,则附加5个空字符并将其传递给休眠,这将获取您的记录。

有什么想法?

答案 3 :(得分:-1)

Session.get(Class clazz, Serializable id)

  

返回给定实体类的持久化实例   给定标识符,如果没有这样的持久化实例则为null。 (如果   实例已经与会话关联,返回该实例   实例。此方法永远不会返回未初始化的实例。)

因此,请检查数据库中是否存在数据。