当前位置: 代码迷 >> J2EE >> hibernate INTEGER 有关问题
  详细解决方案

hibernate INTEGER 有关问题

热度:144   发布时间:2016-04-22 03:09:15.0
hibernate INTEGER 问题
各位大哥帮我看下问题
roleId,drId,是integer类型的,数据库里记录如果相应字段是空就查不出来,不是空就能查的出来,这是怎么回事啊


Java code
  <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>


------解决方案--------------------
是不是用了关联查询?如果是关联查询请用left join on不要直接用等号去查询。
------解决方案--------------------
空就是什么都没有,既然什么都没有,查找出的结果也没有相关的信息
------解决方案--------------------
探讨
我的类发现是Int类型的,null的时候应该报异常才对啊,为什么不报异常啊?
public class User implements java.io.Serializable
{
public int userId; // 用户ID
public int roleId; // 角色ID        这个是int类型不是包装类型null时候该报异常
public int drId;//数据角色ID

          ...........
}

------解决方案--------------------
还有你是不是改过你的数据库对象了?

先说下我发现的错误
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了。
  相关解决方案