当前位置: 首页 > 面试题库 >

Hibernate 5和类型化标准查询(JPA2)

骆鸿运
2023-03-14
问题内容

问题:

1)如果我从Hibernate 4.x升级到Hibernate 5.x,我仍然可以使用“旧”条件查询还是仅使用新的 Typed
JPA2条件查询?旧的是否已弃用,还是可以同时使用?

2)我是否正确理解新的类型化标准会迫使我为我拥有的 每个
实体类创建第二个类,从而使类的数量重复?我应该手动创建这些类吗?如果没有,怎么办?兰特:必须重复上课似乎很奇怪,所以我一定会对它有所误解?那不是过度杀伤和不必要地复杂吗?


问题答案:
  1. 否,不建议使用旧的标准API。只需查看javadoc:没有弃用警告。但是我建议您坚持使用标准的JPA API,而不要使用标准的JPA API和专有的Hibernate API。

  2. 不,不会强迫你。您仍然可以使用字符串标识符。但是,如果以类型安全为目标,则强烈建议使用元模型类。

当然,您不需要手动生成这些。它们是由注释处理器根据您的实体类及其映射注释生成的。您可能会觉得它很奇怪,但是root.get(MyEntity_.firstName)比使用它更安全root.get("firstName"):在编译时检测到错字,如果将字段重构为firstname,编译器会生成错误,而不是让您使用旧的"firstName"字符串标识符。

我仍然发现JPQL查询更易于编写,理解和维护,并且仅在必须基于多个…标准生成动态查询时才使用标准API。使用自动测试来检查查询是否正确。即使使用条件查询BTW,也要这样做。



 类似资料:
  • 到现在我们已经实现了我们那点唱机的一部分代码,我们看到了数组,哈希,方法,但我们还没有涉及到Ruby中其他的数据类型:数字,字符串,范围(ranges),正则表达式。下面我们就要花些时间来看看这些类型。 数字型Ruby 支持整型和浮点型两种数字类型。整型可以是任意长度(最大值由你机器的内存大小决定)。在一定范围内(通常是-230 to 230-1 or -262 to 262-1)在内部由二进制方

  • 标准库提供了很多自定义类型,在原生类型基础上进行了大量扩充。这是部分自定义类型: 可增长的 String(可增长的字符串),如: "hello world" 可增长的 vector: [1, 2, 3] 选项类型(optional types): Option<i32> 错误处理类型(error handling types): Result<i32, i32> 堆分配的指针(heap alloc

  • 我正试图用Python插入到这个Cassandra表中 有了这份准备好的声明: 使用这段代码(数据库已打开并插入到其他表,因此连接有效): 我捕获了异常:“为 bind() 提供的参数太多(得到 12 个,预期为 4)”。 绑定函数是如何将我的4个参数转换为12个的? 希望有什么办法来解决这个问题? 或者,一些使用卡桑德拉MAP,LIST和SET的工作示例,从Python驱动程序将不胜感激。

  • 主要内容:示例查询条件可以帮助您从Access数据库中检索特定项目。 如果项目与输入的所有条件相匹配,则会显示在查询结果中。 当您想根据字段中的值限制查询的结果时,可以使用查询条件。 查询条件是一个表达式,即Access与查询字段值进行比较,以确定是否包含包含每个值的记录。 一些标准很简单,使用基本的操作符和常量。 其他是复杂的,使用函数,特殊的操作符,并包含字段引用。 要将某些条件添加到查询,必须在设计视图中

  • panic! 宏可用于产生一个 panic (恐慌),并开始展开它的栈。在展开栈的同时,运行时将会释放该线程所拥有的所有资源,是通过调用对象的析构函数完成。 因为我们正在处理的程序只有一个线程,panic! 将会引发程序上报 panic 消息并退出。 // 再次实现整型的除法(/) fn division(dividend: i32, divisor: i32) -> i32 { if d

  • 我的问题是空值必须是最后一个order by语句。下面是我的代码截图。我使用javax持久性标准生成器。我的问题很复杂。 如何通过criteria builder以零价格完成订单?