Hibernate:反向生成的pojo有两个的问题
前言:利用Myeclipse反向创建POJO,一些表创建Xxx.java和Xxx.hbm.xml两个文件;但是有些表创建Ttt.java\TttId.java\Ttt.hbm.xml三个文件。一直比较无语,在MyeclipseDatabase Explorer和hibernate.cfg.xml中寻找很长时间原因。
说明一:
表的配置文件中没有指定主键,
Hibernate默认把表中所有字段认为是联合主键了。
说明二:
在演示hibernate练习的时候,我在生成ORM映射的时候,为什么会出现两个POJO类呢?
比如说我有一个数据库表biao 有字段id ,name ,sex ,我做这个映射的时候会自动生成两个POJO类,生成Biao.java和BiaoId.java文件,我看它们都是生成一个的啊,我想操作的时候是针对哪个类呢
------解决方案--------------------
采用自动生成时,插件会将组合主键或没有主键的表拆为两个Bo文件,分别用于存放主键与全部字段,后者包含前者。使用时用后者即Biao.java。
当有唯一主键时,生成时只有一个bo文件。
说明三:
组合主键的问题
解决:下面用实例说明
例如在Oracle中创建了Tlogin1数据库表。
-- Create table
- createtable TLOGIN1
- (
- id NUMBERnotnull,
- loginname VARCHAR2(255),
- username VARCHAR2(255),
- password VARCHAR2(255),
- picurl VARCHAR2(255)
- )
- tablespaceUSERS
- pctfree10
- initrans1
- maxtrans255
- storage
- (
- initial64K
- next1M
- minextents1
- maxextentsunlimited
- );
采用反向工程时生成
且不论怎么改 反向生成 Myeclipse Database Explorer里的配置文件,都没有用。最后查询到是没有对表设置主键。
采用pl\sql Developer来创建(视图创建,查看的代码):
-- Create/Recreateprimary, unique and foreign key constraints
- alter table TLOGIN1
- add constraint ID primary key (ID)
- using index
- tablespace USERS
- pctfree 10
- initrans 2
- maxtrans 255
- storage
- (
- initial 64K
- next 1M
- minextents 1
- maxextents unlimited
- );
如有疑问或好的建议:欢迎留言和发邮件至笔者fzb_xxzy@163.com