在 JPQL 中使用列名而不是实体属性

Sam*_*Sam 6 java hibernate jpa jpql

我有JPQL/Hibernate一层DA。我有一张表如下:

CREATE TABLE Log_Tbl
(
id number,
name varchar2(30),
);
Run Code Online (Sandbox Code Playgroud)

我有一个上表的实体,如下所示:

@Entity
@Table(name = "Log_Tbl")
public class ELog
{
  @Column(name = "id")
  private long entity_id;

  @Column(name = "name") 
  private String entity_name;
}
Run Code Online (Sandbox Code Playgroud)

并将Log实体映射到Log_Tbljpa;我有两个JPQL疑问如下:

  • select ELog from ELog where entity_name = 'Job'
  • select ELog from ELog where name = 'Job'

两个查询都返回了正确的结果。我的问题是:

尽管我使用列名而不是属性,为什么第二个查询会返回正确的结果entity_name

Pre*_*ric 4

引用类似(如果不重复)问题帖子

当您在 HQL 查询的 WHERE 子句中使用 Hibernate 不知道的内容时(例如未在 SQL 方言中注册的函数),Hibernate 会智能地执行操作并将其直接传递到数据库。

因此,它确实有效,但它是特定于供应商的,如果您切换 JPA 实现,则可能无法工作。