jOOQ在<daos>标志设置为true </daos>的情况下不生成DAO

时间:2014-01-16 20:50:39

标签: java sql eclipse sqlite jooq

我已经刷新了我的项目,干净地重建了它,用Google搜索/搜索了StackOverflow以查找类似问题,阅读了jOOQ文档,检查了潜在issues的构建输出等。

我在我的pom.xml中添加了一个<daos>标志来生成jOOQ数据库访问对象,因为可以使用daos标志激活jOOQ 3.2.0 online manual says“DAO生成”。根据jOOQ高级Codegen documentation设置此标志为true不仅会生成DAO,还会生成关系,记录和POJO:

<generator>
    ...
    <generate>
        <daos>true</daos>
    </generate>   
</generator>

在将标志添加到我的pom之前,我有自动生成的记录和关系,但既没有POJO也没有DAO。添加daos标志并重建我的项目后,我还有POJO加上其他两个,但我仍然没有任何DAO。附带的屏幕截图显示了我生成的类。标志添加的类位于blue box。我认为应该有一个名为“daos”的包,包含PurchaseDAO和UserDAO类。

jOOQ DAO documentation没有解释添加标志但是没有生成DAO的任何情况。这个项目的部分重点是学习jOOQ,所以用jOOQ类手动编码DAO并不能解决我的问题。

编辑:来自工作和非工作解决方案的我的SQLite 3.7.11架构是here

3 个答案:

答案 0 :(得分:9)

我在你的控制台输出中发现DAO正在跳过,

  

信息:生成DAO 2014年1月16日下午12:40:45   org.jooq.tools.JooqLogger info INFO:跳过DAO生成:   PurchaseDao.java 2014年1月16日下午12:40:45 org.jooq.tools.JooqLogger   info INFO:跳过DAO生成:UserDao.java 2014年1月16日   12:40:45 PM org.jooq.tools.JooqLogger info INFO:生成表DAO   :总计:212.968ms,+ 1.759ms

之后的cheked代码,然后找到

// [#2573] Skip DAOs for tables that don't have 1-column-PKs (for now)
1287        if (keyColumn == null) {
1288            log.info("Skipping DAO generation", getStrategy().getFileName(table, Mode.DAO));
1289            return;
1290        }

答案 1 :(得分:0)

我今天(2017年)遇到了同样的问题。

在配置文件中,使用相同的on line命令, 例如:

java -classpath jooq-3.10.2.jar:jooq-meta-3.10.2.jar:jooq-codegen-3.10.2.jar:mysql-connector-java-5.1.45-bin.jar:. org.jooq.util.GenerationTool 

configuration.xml 中,在标签“generator”之间放置带有参数的标签“generate”。

E.g:

<generator>
    ...
    <generate> 
        <pojos>false</pojos>
        <daos>true</daos>
         ...
    </generate>   
</generator> 

详细了解这些参数here

答案 2 :(得分:0)

必须解决配置includePrimaryKeys

<includePrimaryKeys>true</includePrimaryKeys>
相关问题