JOOQ外键概念缺点?

时间:2016-01-29 18:21:15

标签: java jooq

最近,我开始在我的项目中使用JOOQ(版本3.7.1), 但是,我已经遇到了一个问题 - 对我来说 - 似乎是 JOOQ实施的一个缺点。

在一组表格上执行JOIN时会出现此缺点, 其中一个特定表出现多次,例如一个连接 表PERSON本身(即找到父母的数据)..

JOOQ生成的PERSON类可以使用多次使用一次 但是,Table.as(String name)方法,getReferences()方法返回的外键只返回静态Keys类的引用列表。 这样,加入一个人与地址表,JOOQ没有办法 确定是否应该加入主要人员或父母。

由于这个原因,在我看来,外键应该总是与对包含外键(引用者)和JOOQ的特定表的引用相结合,例如在SelectQuery(SelectQueryImpl类)中没有'提供 那个安全。 " addJoinOnKey"中的TableLike参数method指的是引用的表,而不是引用者。

我错了吗?或者JOOQ真的无法正确处理查询 在一个特定的表使用多一次? 如果是的话,为什么这不固定?

致以最诚挚的问候,期待您的意见。

1 个答案:

答案 0 :(得分:0)

这可能确实是一个缺点,具体取决于您如何看待jOOQ API。路线图上存在一个问题,讨论别名表返回别名版本的约束信息的可能性: https://github.com/jOOQ/jOOQ/issues/5050

// "MY_TABLE"."ID"
MY_TABLE.getPrimaryKey();

// "a"."ID"
MY_TABLE.as("a").getPrimaryKey();

为了从表中获取正确的列集,您始终可以调用:

MY_TABLE.as("a").fields(MY_TABLE.getPrimaryKey().getFieldsArray());

目前的问题很难说是否还有一个额外的错误(除了上述潜在的缺点)。一旦问题指出具体问题,我就会更新这个答案。