给定一个包含多个表的查询...
dsl.select(
CUSTOMERS.ID,
CUSTOMERS.NAME,
CUSTOMRS.ADDRESS,
ORDERS.ID,
ORDERS.PRICE,
ORDERS.PRODUCT_ID
PRODUCTS.NAME,
.from(CUSTOMERS)
.join(ORDERS).on(ORDERS.ID.eq(CUSTOMERS.ORDER_ID))
.join(PRODUCTS).on(ORDERS.PRODUCT_ID.eq(PRODUCTS.ID))
.fetch()
有没有办法编写这个查询而不在代码中列出所有列名?具体来说,有没有一种方法可以获取某些表中的所有列,但只能获取某些表中的指定列。
我有兴趣减少在向表添加新列时忘记向查询添加新字段的可能性。此外,我不想使用
.asterik()
/ SELECT *
,因为它存在各种不适合生产的经典问题。
因此,有没有像这个想象中的例子一样的东西?谢谢!
dsl.select(
CUSTOMERS.columns()
ORDERS.columns()
PRODUCTS.NAME,
.from(CUSTOMERS)
.join(ORDERS).on(ORDERS.ID.eq(CUSTOMERS.ORDER_ID))
.join(PRODUCTS).on(ORDERS.PRODUCT_ID.eq(PRODUCTS.ID))
.fetch()
CUSTOMERS.fields()
等并将它们传递给单独的 select()
调用:
dsl.select(CUSTOMERS.fields())
.select(ORDERS.fields())
.select(PRODUCTS.NAME)
...
或者如果您愿意,您可以直接嵌套
TableRecord
:
dsl.select(CUSTOMERS, ORDERS, PRODUCTS.NAME)
...