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

时间:2014-12-07 16:55:23

标签: java hibernate jpa jpql

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

CREATE TABLE Log_Tbl
(
id number,
name varchar2(30),
);

我上面有一个实体如下:

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

  @Column(name = "name") 
  private String entity_name;
}

并按LogLog_Tbl实体映射到jpa表格; 我有以下两个JPQL个查询:

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

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

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

1 个答案:

答案 0 :(得分:2)

引用post类似(如果不是重复)的问题

  

当您在HQL查询的WHERE子句中使用Hibernate不知道的内容时(例如,未在SQL方言中注册的函数),Hibernate会巧妙地将其直接传递给数据库。 / p>

因此,它确实有效,但它是供应商特定的,如果您切换JPA实现可能不会起作用。