appfuse中遇到的一些问题

来源:互联网 发布:股市文字直播软件 编辑:程序博客网 时间:2024/06/03 20:25

今天第一次使用appfuse框架创建ssh继承架构,遇到了一系列的问题,下面简单总结一下

1.在控制台上进入到项目目录下执行mvn appfuse:copy-templates命令,本应该在src/test/resources/appfuse/
下面导入dao,model,service,web四个模版,结果并没有成功导入进来

对此的解决办法就是,去github官网上搜索appfuse,在appfuse/plugins/appfuse-maven-plugin/src/main/resources/appfuse/下面就有这四个模版,将其下载下来到手动导入项目的src/test/resources/appfuse/路径下

2.在model层的实体类中,所有的id都没有@column,没有映射到对应表中的字段,所以我们需要对src/test/resources/appfuse/model/Ejb3PropertyGetAnnotation.ftl文件进行修改

    <#if property.equals(clazz.identifierProperty)><#rt/>
        <#lt/>${pojo.generateAnnIdGenerator()} @DocumentId

在原文件上述字段后面添加 ${pojo.generateAnnColumnAnnotation(property)}<#rt/>

就能够完美解决

3.我们知道发生BeanCreationException的情况有很多,今天我又见到新的一种,一哥们在表中添加的字段类型是个xx类型,而在实体类中字段属性没有对应上,因此报出该异常,这种异常不好检查,以后尽量注意,不要犯这种错误。

4.创建新的model的dao和service时,appfuse自主创建的GenericManagerImpl其中有一个构造方法需要子类传入dao

 public GenericManagerImpl(GenericDao<T, PK> genericDao) {
        this.dao = genericDao;
    }
这和我们自己搭建的ssh框架所创建的GenericManagerImpl类略有不同,因此我们必须在子类中把子类的dao传入父类之中

这种传入方式有两种

(1)private DepartmentDao departmentDao;
@Autowired
public DepartmentManagerImpl(DepartmentDao departmentDao){
super(departmentDao);
this.departmentDao=departmentDao;
}

(2)  @Autowired
    public void setUserDao(final UserDao userDao) {
        this.dao = userDao;
        this.userDao = userDao;
    }

第二种方法之所以可以这样传是因为父类的dao是这样的

protected GenericDao<T, PK> dao;

这些是我在学习的时候遇到的一些小问题,以此记录。

0 0