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

标签 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;
}

并通过jpaLog实体映射到Log_Tbl表; 我有两个 JPQL 查询如下:

  • 从 ELog 中选择 ELog,其中 entity_name = 'Job'
  • 从名称 = 'Job' 的 ELog 中选择 ELog

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

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

最佳答案

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

When you use something that isn't known by Hibernate in the WHERE clause of an HQL query (e.g. a function that is not registered in the SQL dialect), Hibernate acts smartly and passes it directly to the database.

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

关于java - 在 JPQL 中使用列名而不是实体属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27345133/

相关文章:

java - Java中子类中过滤掉父类的记录

Java 录制屏幕的速度不够快

java - JPA 与 Jboss 异常

hibernate - JPA/Hibernate 同一实体的多种表示

java - 如何使用 JPA 和 Hibernate 初始化数据库表(插入行)?

java - Hibernate 过滤器的 JPA 等效项

java - 如何从列表中删除重复的对象

java - 无法使用 Spring Data REST 捕获 DataIntegrityViolationException

java - Eclipse中Hibernate空指针异常

java - QueryDSL where 子句上的 NullPointerException