Java 在JPQL中使用列名而不是实体属性
我有Java 在JPQL中使用列名而不是实体属性,java,hibernate,jpa,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; }
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;
}
我在上表中有一个实体,如下所示:
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
查询,如下所示:
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;
}
从实体名称为“作业”的ELog中选择ELog
从ELog中选择ELog,其中name='Job'
entity\u name
属性?引用了一个类似的问题(如果不是重复的话)
当您在HQL查询的WHERE子句中使用Hibernate不知道的内容(例如,未在SQL方言中注册的函数)时,Hibernate会灵活地操作并将其直接传递给数据库
所以,它确实可以工作,但它是特定于供应商的,如果您切换JPA实现,它可能不会工作 第二个是非法的JPQL和不可移植的。@NeilStockton,但第二个查询执行并回答得很好,正如我所说的,它是无效的JPQL,如果它在您的JPA实现中工作,那么您在任何情况下都不能依赖它other@NeilStockton我的意思是你的答案是什么,它真的取决于
JPA
实现吗?(在我的情况下,它是Hibernate
)是的,我的目标是确保它是特定于供应商的,并且可能不适用于其他JPA
实现。