【问题标题】:Does Hibernate allow writing of String/Type Safe SQL?Hibernate 是否允许编写字符串/类型安全 SQL?
【发布时间】: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 作为答案,我可以发送积分,谢谢
  • 谢谢马特。 :)

标签: java hibernate redhat


【解决方案1】:

根据要求,我将添加我的评论作为答案。

Id 取决于您创建查询的方式,如果您使用 JPA/Native 查询,,如果您使用标准(仅包含实体对象),那么是。

这是一个仅使用实体对象的 Criteria 示例:https://stackoverflow.com/a/36648488/460557

虽然如果您使用的是需要传入字符串的 Criteria API,那么答案也是否定的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2020-11-17
    • 2013-11-07
    • 2015-10-26
    • 1970-01-01
    相关资源
    最近更新 更多