当前位置: 首页 > 知识库问答 >
问题:

如何用Hibernate构建DSL路径

孔磊
2023-03-14

有没有一种方法可以用Hibernate实现DSL查询?我主要是指更容易和更安全的HQL语句构建。例如,如下所示的HQL查询:用户u中选择u.ID,其中u.person.identitycard.lastname like:lastnameVar将如下所示:

Select.from(User.class, “u”).where(eq(“u”, User.person().identityCard().lastName(), lastNameVar))
@Entity
public class User {

    public static DSLProperty<Person> person() = new DSLProperty<>(“person”); // how do I write DSLProperty class to achieve this?

    @OneToOne
    @JoinColumn(name=“person_id”)
    private Person person;

    //getters, setters etc.

}

附言。这更多的是一个实验性的特征,我想自己弄清楚。我知道像QueryDSL和jOOQ这样的库,但我不确定它们是否支持属性链接,而且我更感兴趣的是从头开始实现这个特性。

共有1个答案

宦正诚
2023-03-14

古老而冗长的解决方案--CriteriaBuilder

调制解调器--QueryDSL

 类似资料:
  • 这个问题询问如何用Gradle构建SourceJar。我如何用Gradle Kotlin DSL做同样的事情? 分级代码为:

  • 问题内容: 读完Hibernate之后:hbm2ddl.auto=正在生产中更新吗?出现了一些问题。首先,我使用Hibernate的原因是要与数据库供应商无关(无需编写10个版本的“相同” sql查询,例如tsql vs. sql)。 我的问题是在创建数据库架构(生产环境)时出现的。据我所知,我有两种选择。 hbm2dll =更新 纯sql(ddl)脚本。 在上面的主题中广泛讨论了第一种选择。第二

  • 我有一个camel Java DSL路由,它被定义为从队列中获取消息并将它们路由到Java处理器。路由定义了一些异常处理,它查找特定类型的异常,并在处理器抛出该异常时将消息放回队列中。我已经知道这条路由实际上是可行的,但是我想对这条路由进行正确的单元测试。 是否可以发布一个简单的基于Java DSL的示例来说明如何执行此操作?我从各种帖子中拼凑出一些建议,也许我应该使用camel占位符功能,用se

  • 我有一个带有Ant构建脚本的项目,该脚本基于单独的动态Web项目中的类文件创建JAR文件。我已经读到,我可以在构建脚本中使用${workspace\u loc},但当我用${workspace\u loc}替换动态Web项目的硬编码路径时,构建失败: 生成失败D:\Eclipse\projects\webapp\workspace\Ant BUILD for client\BUILD。xml:30

  • 我正在尝试使用ShadowJar构建一个fatjar。我的应用程序和gradle代码如下。我使用Gradle 5.0进行构建。当我运行./gradlew run时,代码运行正常。当我运行“gradle shadowjar”并使用“build/lib”文件夹中的“java-jar”运行fatjar时,我得到了以下错误。 我猜依赖项没有加载到fatjar中?我还使用Groovy构建了Gradle文件,

  • 问题内容: 我正在尝试使用goncurses。在Centos 6上,ncurses库很旧(5.7,需要5.9),所以我从源代码构建了ncurses并将其安装到/ usr / lib,/ usr / include等。 如何告诉“ go get”针对/ usr / lib中的内容而不是/ lib中的系统内容运行? 这是我当前的输出: 我已经尝试过上不同的变化,并与出任何行为改变。 我知道这是一个简单