日期:2014-05-20  浏览次数:20627 次

请教大家一个关于Hibernate检索的问题???
我有如下entity:
public class Categoryname implements java.io.Serializable {

private Integer catNameId;
private int categoryId;
private String catName;
private String languageFlg;
private int createUserId;
private Date createDate;
private int modifyUserId;
private Date modifyDate;
  。。。。。。。
}
再对该表检索时使用hibernate自动生成的findbyexample,可是由于其中某些字段有默认值(比如:categoryId的默认值为0),造成每次检索都为空,请问大家这种情况应该怎么办(不要告诉我把字段都改成String,因为表实在是太多了,都改成String不太现实)?小弟刚刚学习hibernate,请大家不吝赐教。

------解决方案--------------------
Categoryname 对应的表可有数据啊?
------解决方案--------------------
你怎么查询的?代码可贴出来,那里报null了?这个跟默认值没关系的吧
------解决方案--------------------
你当然没必要改成string,而是应该改成Long或者Integer。

你应该用对象类型,而不是值类型(基本类型)。使用对象类型虽然有点麻烦。但是,值类型无法表示空这个概念。
------解决方案--------------------
四楼说对了:
private Integer categoryId; 
private Integer createUserId; 
private Date createDate = new Date();
private Integer modifyUserId; 

int型换成Integer类型就不会报空了。
createUserId和modifyUserId如果还做了外对象关联,需要外表有对应的数据,同时这里应该用外对象来定义(例如):
private User createUserId;
private User modifyUserId;
------解决方案--------------------
你可以把映射文件<id>元素改成<id name="" column="" type="" unsaved-value="0">
试一下!