关于hibernate逆向生成实体类的问题

时间:2022-09-07 12:41:12
   小弟最近在做一个web项目,数据库时sql sever2005  我用myEclipse自带的hibernate工具 从表生成实体类的时候,为什么一个表生成了两个实体类?那我hql查询的时候应该是查哪个对象呢?

例如一个 user表 生成了userID  还有一个user的实体类,userID的实体类 就包含了user表的一些基本信息,可是另外一个实体类包含的是 user表的主键 和 外键的对象,这是怎么回事啊?

12 个解决方案

#1


那就手动建实体和映射文件咯,因为逆向工程不一定都能正常用的

#2


这个同学可以尝试为那个表建立一个主键 

#3


在逆向生成时,不要采用默认的 ,有个勾选的 去掉之后,就会只生成一个类

#4


大家可能没明白我的意思,一前作都不会出现这样的问题 我的其中一张表逆向生成的时候
SystemRankingInfo
SystemRankingInfoId生成了这样两个类

其中SystemRankingInfo类中包含两个属性
         private SystemRankingInfoId id;
private SystemUsers systemUsers;
另外一个SystemRankingInfoId这个类中包含了
         private Integer id;
private String year;
private String month;
private Integer target;
private Double finished;
private Double finishrate;
private Integer groups;
private SystemUsers systemUsers;
private Short isGroupedByDept;
也就是数据库中对应的一些值,怎么会生成这样两个文件呢??
另外 我的映射文件对应的是SystemRankingInfo,我将数据库中的值都list出来,list.size的值也对应了数据库中实际记录的条数~~
可是我将list每个遍历并且getId那个对象得到SystemRankingInfoId 这个类型的时候 都报的null,
是不是和一个数据库表生成两个pojo有关呢?怎么会生成这两个类呢??很纳闷。。。

#5


个人觉得最好不要用反向工程生成类,那样有时会乱,对应不起来。

手动建吧,这样你可以了解到很多.hbm.xml文件里的属性,用得更熟练。

你这个问题,因为自己没有遇到过,所以只能提点意见,觉得应该是配置问题,MyEclipse或SQL里的表的属性。主键外键。

#6


我知道 我说你把表建立主键 就不会出现两个了

#7


其实逆向的也比较好用,不过要稍微改一改啦

#8


恩。。 解释不清楚了。。。 如果不建立主键的话 myeclipse会默认生成一个主键类的

#9


问题解决了~~楼上的兄弟说的对~~~我才发现这一点~~~呵呵~~~谢谢了~~~主键的问题~~

#10


应验证,是没建主键引起的

#11


该回复于2011-03-22 13:01:39被版主删除

#12


没设置主键就会生成两个实体类,设置主键就好了   关于hibernate逆向生成实体类的问题

#1


那就手动建实体和映射文件咯,因为逆向工程不一定都能正常用的

#2


这个同学可以尝试为那个表建立一个主键 

#3


在逆向生成时,不要采用默认的 ,有个勾选的 去掉之后,就会只生成一个类

#4


大家可能没明白我的意思,一前作都不会出现这样的问题 我的其中一张表逆向生成的时候
SystemRankingInfo
SystemRankingInfoId生成了这样两个类

其中SystemRankingInfo类中包含两个属性
         private SystemRankingInfoId id;
private SystemUsers systemUsers;
另外一个SystemRankingInfoId这个类中包含了
         private Integer id;
private String year;
private String month;
private Integer target;
private Double finished;
private Double finishrate;
private Integer groups;
private SystemUsers systemUsers;
private Short isGroupedByDept;
也就是数据库中对应的一些值,怎么会生成这样两个文件呢??
另外 我的映射文件对应的是SystemRankingInfo,我将数据库中的值都list出来,list.size的值也对应了数据库中实际记录的条数~~
可是我将list每个遍历并且getId那个对象得到SystemRankingInfoId 这个类型的时候 都报的null,
是不是和一个数据库表生成两个pojo有关呢?怎么会生成这两个类呢??很纳闷。。。

#5


个人觉得最好不要用反向工程生成类,那样有时会乱,对应不起来。

手动建吧,这样你可以了解到很多.hbm.xml文件里的属性,用得更熟练。

你这个问题,因为自己没有遇到过,所以只能提点意见,觉得应该是配置问题,MyEclipse或SQL里的表的属性。主键外键。

#6


我知道 我说你把表建立主键 就不会出现两个了

#7


其实逆向的也比较好用,不过要稍微改一改啦

#8


恩。。 解释不清楚了。。。 如果不建立主键的话 myeclipse会默认生成一个主键类的

#9


问题解决了~~楼上的兄弟说的对~~~我才发现这一点~~~呵呵~~~谢谢了~~~主键的问题~~

#10


应验证,是没建主键引起的

#11


该回复于2011-03-22 13:01:39被版主删除

#12


没设置主键就会生成两个实体类,设置主键就好了   关于hibernate逆向生成实体类的问题