gpt4 book ai didi

java - org.jooq.Query.getBindValues() 返回的 List 是否包含每个查询参数的类型安全对象?
转载 作者:行者123 更新时间:2023-12-02 08:57:47 25 4
gpt4 key购买 nike

JOOQ 新手。偶然发现了这个帖子: https://thoughts-on-java.org/hibernate-jooq-a-match-made-in-heaven/

`

SelectConditionStep<Record3<String, String, String>> jooqQuery = 
ctx.select(AUTHOR.FIRSTNAME, AUTHOR.LASTNAME, BOOK.TITLE)
.from(AUTHOR)
.leftJoin(BOOK_AUTHOR).on(AUTHOR.ID.eq(BOOK_AUTHOR.AUTHORS_ID))
.leftJoin(BOOK).on(BOOK_AUTHOR.BOOKS_ID.eq(BOOK.ID))
.where(AUTHOR.FIRSTNAME.like("Thor%"));
Query q = em.createNativeQuery(jooqQuery.getSQL());
setBindParameterValues(q, jooqQuery);


private static void setBindParameterValues(javax.persistence.Query jpaQuery, org.jooq.Query jooqQuery) {
List<Object> values = jooqQuery.getBindValues();
for (int i = 0; i < values.size(); i++) {
jpaQuery.setParameter(i + 1, values.get(i));
}
}

`

方法jpaQuery.setParameter()本身不是类型安全的,因为它接受“对象”。

问题:是否 jooqQuery.getBindValues()返回List<Object>哪些是“每个参数类型安全”?

最佳答案

该方法是博客文章作者编写的粘合代码,用于将 jOOQ Query 转换为 JPA Query。此粘合代码中不存在类型安全。您正在寻找的类型安全已在帖子的其他示例中提供,其中作者使用 jOOQ API 构建了类型安全查询,如下所示:

// This stuff is type safe
var jooqQuery =
ctx.select(AUTHOR.FIRSTNAME, AUTHOR.LASTNAME, BOOK.TITLE)
.from(AUTHOR)
.leftJoin(BOOK_AUTHOR).on(AUTHOR.ID.eq(BOOK_AUTHOR.AUTHORS_ID))
.leftJoin(BOOK).on(BOOK_AUTHOR.BOOKS_ID.eq(BOOK.ID))
.where(AUTHOR.FIRSTNAME.like("Thor%"));

// This stuff isn't, and there is no need
Query q = em.createNativeQuery(jooqQuery.getSQL());
setBindParameterValues(q, jooqQuery);

关于java - org.jooq.Query.getBindValues() 返回的 List<Object> 是否包含每个查询参数的类型安全对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60380639/

25 4 0