各位大哥帮我看下问题
roleId,drId,是integer类型的,数据库里记录如果相应字段是空就查不出来,不是空就能查的出来,这是怎么回事啊  
<hibernate-mapping>
<class name="com.fwzl.system.entity.User"
table="t_sys_user">
<id name="userId" column="user_id" type="java.lang.Integer">
<generator class="sequence">
<param name="sequence">SEQ_SYS_USER</param>
</generator>
</id>
<property name="roleId" type="java.lang.Integer"  column="user_roleid" /> <property name="drId" type="java.lang.Integer"  column="USER_DATAROLEID" /> <property name="loginName" type="java.lang.String" update="true"
insert="true" column="user_loginname" /> <property name="userPassword" type="java.lang.String"
update="true" insert="true" column="user_password" /> <property name="userName" type="java.lang.String" update="true"
insert="true" column="user_name" />

</class></hibernate-mapping>

解决方案 »

  1.   

    是不是用了关联查询?如果是关联查询请用left join on不要直接用等号去查询。
      

  2.   

    我的类发现是Int类型的,null的时候应该报异常才对啊,为什么不报异常啊?
    public class User implements java.io.Serializable
    {
    public int userId; // 用户ID
    public int roleId; // 角色ID        这个是int类型不是包装类型null时候该报异常 
    public int drId;//数据角色ID           ...........
    }
      

  3.   

    说明你的那2个不是主键的字段允许为空呗,你没设置成非空字段,当然是null没问题了
    至于为什么查不出来,你还是把你的查询语句贴出来吧,别让大家用猜的
      

  4.   

    sql 就是很简单的 from User 单表查询
      

  5.   

    当null 赋值给int 类型当然要抱异常吧
      

  6.   

    还有你是不是改过你的数据库对象了?先说下我发现的错误
    1.数据库对象属性应该是私有的private,同时带有公有的get和set,方法,而你的是public的,
    2.配置文件里是java.lang.Integer类型,而你的类里是int,Integer是int的包装类,一个是类类型,一个是基本类型,Integer可以为null,你的对象里应该是private Integer roleId,这个时候可以是null的
    而,而你定义成int形初始化的时候默认值就是0.所以说你的public int roleId,根本就没=null,而是被默认成0了。