繁体   English   中英

在JOOQ生成器中禁用关系生成有什么后果?

[英]What are the consequences of disabling relation generation in the JOOQ generator?

我可以通过设置以下配置选项来禁用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本身的哪些功能取决于此信息?

本质上,您将无法使用手册中有关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中仅在少数几个地方使用外键信息,其中包括导航方法

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语句不受影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM