我可以通过设置以下configuration options来禁用JOOQ生成器中的标识,外键和唯一密钥生成:
<generate>
<!-- Primary key / foreign key relations should be generated and used.
This is a prerequisite for various advanced features.
Defaults to true -->
<relations>false</relations>
尽管元模型中没有FK / UK信息,但是禁用这一代的后果究竟是什么? JOOQ本身的哪些功能取决于这些信息?
答案 0 :(得分:1)
基本上,您无法使用手册关于CRUD的部分中记录的大部分功能:
http://www.jooq.org/doc/latest/manual/sql-execution/crud-with-updatablerecords/
如果不了解主键,则没有UpdatableRecord
。即,你将无法写出如下内容:
// This works:
MyTableRecord record =
DSL.using(configuration)
.selectFrom(MY_TABLE)
.where(MY_TABLE.ID.eq(1))
.fetchOne();
// These won't work:
record.store();
record.update();
record.refresh();
record.delete();
// This will still work:
record.insert();
外键信息目前仅在jOOQ中的几个地方使用,其中包括navigation methods:
BookRecord book = DSL.using(configuration)
.selectFrom(BOOK).where(BOOK.ID.eq(1)).fetchOne();
// This won't work
AuthorRecord author = book.fetchParent(FK_BOOK_AUTHOR);
还有计划增强代码生成器以生成这样的导航方法(#4210),这意味着以下方法无法工作:
// This won't work
AuthorRecord author = book.fetchFkBookAuthor();
或者,合成JOIN ON KEY
子句:
DSL.using(configuration)
.select()
.from(AUTHOR)
.join(BOOK).onKey()
.fetch();
将来会有其他功能取决于约束信息的可用性,但普通的SQL语句不会受到影响。