备注:整理别人的资料,加上自己的实践,参考文章:
http://www.diybl.com/course/3_program/java/javashl/20090131/154668.html
12创建表
CREATETABLE`Employee`(
`id`bigint(20)NOTNULLauto_increment,
`code`varchar(10)NOTNULL,
`dept`varchar(50)NOTNULL,
`name`varchar(20)NOTNULL,
`status`varchar(10)NOTNULL,
`telephone`varchar(20)defaultNULL,
`title`varchar(50)NOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
由表生成model运行mvnappfuse:gen-model
会在model包中生成Employee.java
查看原代码,原来model中有两个ID的生成策略,如下:
@Id@GeneratedValue(strategy=IDENTITY)@GeneratedValue(strategy=GenerationType.AUTO)
删除@GeneratedValue(strategy=IDENTITY),只剩下一个。
14由model生成CRUD
mvnappfuse:gen-Dentity=Employee
会生成employeeList.jsp、employeeForm.jsp、EmployeeAction.java
但是没有自动生成dao与service而是采用的GenericManager中的方法,解决方法见15
15在项目下的pom.xml中查找genericCore,大概在940行找到将属性true改为false
像这样false
16重新运行mvnappfuse: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文件,把里面的文件改成中文,然后mvnjetty: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”很容易报一下错误:
因为“mvn appfuse:gen -Dentity=Name”一次只支持一个Entity(这样执行会很累啊),会找不到对应的关联者。这时,我们需要手动的将有关联关系的Entity都加入到hibernate.cfg.xml里,再执行就可以了。
3。执行“mvn jetty:run-war”时,会根据POJO先删除数据库里的表再重建,如果不想对数据进行操作可以修改pom.xml,将drop熟悉修改为 false。不过执行“mvn jetty:run-war”仍然会执行建表操作,出现大量的错误日志,不过没有影响。
4。执行“mvn jetty:run-war”时,会清空数据表的数据并插入默认的数据,默认的数据在%PROJECT_HOME%\src\main \resources\default-data.xml配置,这个很讨厌。修改pom.xml可以屏蔽这部分操作。
5。执行“mvn jetty:run-war”时,会执行测试,很XP喔。如果测试通不过服务就起不来。找了很多配置似乎都跳不过这一步。
appfuse:gen-model时生成的POJO,自增列不会生成@Column注释,就容易报以下的错误,增加相应的@Column就可以了:
另外生成的测试类也不是直接可以测试通过的,还要针对数据做一些修改。如果POJO存在关联关系,测试类的关联部分也需要进行手动设值的。