3

我有以下问题,Hibernate 文档中没有涉及。或者我只是在那里找不到答案。谷歌搜索也没有给我详细信息。

如果我们使用 Entity 对象作为参数并使用 Query.setParameter 将其绑定到 HQL,接下来会发生什么?

  • hibernate 是否仅使用映射参数对象的实体 ID 来构建 SQL 'where' 查询?
  • 或者 Hibernate 使用了一些额外的逻辑(可能在某些情况下),不仅限于 ID?例如,hibernate 在 SQL 中添加额外的字段,这些字段不是主键。
  • 使用分离的实体对象作为参数是否危险?

先感谢您!

4

1 回答 1

2

就 SQL 而言,它将简单地使用 id 进行比较。正如您对问题的评论所暗示的那样,您绑定的实体不必在该会话中进行管理。

本质上,Hibernate 将尝试解析给定实体实例的实体类型。然后它将使用该类型来绑定 JDBC 参数值,这将只写入标识符。所以这里的假设是实体实例可以解析为它的“实体类型”。在大多数情况下,这通常很容易。在 Hibernate 特定的“实体名称”功能的情况下变得困难。

于 2013-06-20T13:05:30.533 回答