appfuse 数据表 反向工程

备注:整理别人的资料,加上自己的实践,参考文章:

http://www.diybl.com/course/3_program/java/javashl/20090131/154668.html

12 创建表 
CREATE TABLE `Employee` ( 
`id` bigint(20) NOT NULL auto_increment, 
`code` varchar(10) NOT NULL, 
`dept` varchar(50) NOT NULL, 
`name` varchar(20) NOT NULL, 
`status` varchar(10) NOT NULL, 
`telephone` varchar(20) default NULL, 
`title` varchar(50) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

由表生成model 运行mvn appfuse:gen-model 
会在model包中生成Employee.java 
查看原代码,原来model中有两个ID的生成策略,如下: 
@Id @GeneratedValue(strategy=IDENTITY) @GeneratedValue(strategy = GenerationType.AUTO) 
删除@GeneratedValue(strategy=IDENTITY),只剩下一个。 
14 由model 生成CRUD 
mvn appfuse:gen -Dentity=Employee 
会生成employeeList.jsp、employeeForm.jsp、EmployeeAction.java 
但是没有自动生成dao与service 而是采用的GenericManager中的方法,解决方法见15 
15 在项目下的pom.xml中查找genericCore,大概在940行 找到 将属性true 改为false 
像这样false 
16 重新运行 mvn appfuse:gen -Dentity=Employee 

mvn appfuse:install -Dentity= Employee  试一下

 

在myeclipse中查看代码 dao 与 service也都生成了 

问题:EmployeeDaoHibernate.java不能发布到tomcat上,很奇怪

不要忘了在hibernate.cfg.xml中添加maping

部署的时候,发布不了, 记得把src/main/webapp在bulid path中删除,然后用webapp指向它(link source)

 


18 但是最后还有个问题 就是appfuse页面中 显示乱码 ,我的上篇文章也有介绍
解决方法:修改pom.xml中 
255行:UTF-8 
260行: *_zh*.properties 
293行:*_zh*.properties 
发现问题依然存在,然后修改display*.properties文件,把里面的文件改成中文,然后mvn jetty:run一下就可以了

 

 

相关知识:(转载)

1。可以使用“mvn appfuse:gen-model”依据数据库的表生成POJO,如果你非常熟悉JPA也可以手写POJO,位置在DgroupId.model下。再通过“mvn appfuse:gen -Dentity=Name”生成CURD类。
   
    2。如果POJO不存在关联关系,那么执行“mvn appfuse:gen -Dentity=Name”时,如果Entity没有在hibernate.cfg.xml里,则会自动增加。如果存在关联关系,在POJO里注释了 @OneToMany或者 @ManyToMany,直接执行“mvn appfuse:gen -Dentity=Name”很容易报一下错误:

    [INFO] ------------------------------------------------------------------------
    [ERROR] FATAL ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Use of @OneToMany or @ManyToMany targeting an unmapped class: com.reda.app.model.CompanyType.
    companies[com.reda.app.model.Company]
    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com
    .reda.app.model.CompanyType.companies[com.reda.app.model.Company]
            at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.
    java:979)
    ......

  
    因为“mvn appfuse:gen -Dentity=Name”一次只支持一个Entity(这样执行会很累啊),会找不到对应的关联者。这时,我们需要手动的将有关联关系的Entity都加入到hibernate.cfg.xml里,再执行就可以了。
   
    3。执行“mvn jetty:run-war”时,会根据POJO先删除数据库里的表再重建,如果不想对数据进行操作可以修改pom.xml,将drop熟悉修改为 false。不过执行“mvn jetty:run-war”仍然会执行建表操作,出现大量的错误日志,不过没有影响。

 1      < groupId > org.codehaus.mojo </ groupId >
 2      < artifactId > hibernate3-maven-plugin </ artifactId >
 3      < version > 2.0-alpha-2 </ version >
 4      < configuration >
 5          < components >
 6              < component >
 7                  < name > hbm2ddl </ name >
 8                  < implementation > annotationconfiguration </ implementation >
 9                  <!--  Use 'jpaconfiguration' if you're using JPA.  -->
10                  <!-- <implementation>jpaconfiguration</implementation> -->
11              </ component >
12          </ components >
13          < componentProperties >
14              < drop > false </ drop >
15              < jdk5 > true </ jdk5 >
16              < propertyfile > target/classes/jdbc.properties </ propertyfile >
17              < skip > ${maven.test.skip} </ skip >
18          </ componentProperties >
19      </ configuration >


    4。执行“mvn jetty:run-war”时,会清空数据表的数据并插入默认的数据,默认的数据在%PROJECT_HOME%/src/main /resources/default-data.xml配置,这个很讨厌。修改pom.xml可以屏蔽这部分操作。

  < dbunit .operation.type > NONE </ dbunit.operation.type >

    5。执行“mvn jetty:run-war”时,会执行测试,很XP喔。如果测试通不过服务就起不来。找了很多配置似乎都跳不过这一步。
    appfuse:gen-model时生成的POJO,自增列不会生成@Column注释,就容易报以下的错误,增加相应的@Column就可以了: 

   Unknown column 'this_.typeId' in 'field list'

    另外生成的测试类也不是直接可以测试通过的,还要针对数据做一些修改。如果POJO存在关联关系,测试类的关联部分也需要进行手动设值的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值