我有 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;
}
并通过jpa
将Log
实体映射到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/