【发布时间】:2021-09-08 14:39:31
【问题描述】:
Hibernate 是否允许编写 String/Type SQL,类似于 Entity Framework /w Linq,一个人可以编写正确的 Sql,以及任何拼写错误的 SQL 表,列名将在编译时显示,而不是在运行时显示?
create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
.from(AUTHOR)
.join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
.where(BOOK.LANGUAGE.eq("DE"))
.and(BOOK.PUBLISHED.gt(date("2008-01-01")))
.groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
.having(count().gt(5))
.orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
.limit(2)
.offset(1)
【问题讨论】:
-
Id 取决于您创建查询的方式,如果您使用 JPA/Native 查询,则不,如果您使用标准,则可以。而且我什至可能在这里错了这么多时间使用 Spring Boot 数据,以至于 Hibernate 可能会出现一些新的东西:)
-
嗨 @JorgeCampos 我不认为 Hibernate Criteria 在查看资源时执行字符串/类型安全 sql,一个人可以输入任何字符串 howtodoinjava.com/hibernate/hibernate-criteria-queries-tutorial
-
我指的是 Criteria 对象的使用,这里只使用这样的实体字段:stackoverflow.com/a/36648488/460557 在这种情况下它确实在编译时验证,但你是对的,如果一个人使用所有那些使用字符串对其进行的 API 调用,没有办法。无论如何感谢您的信息。
-
嗨 @JorgeCampos 可以随意写 cmets 作为答案,我可以发送积分,谢谢
-
谢谢马特。 :)