1

我想获取Patient联系电话不为空的(POJO 类)的记录。所以,我提到了这篇 文章
在答案中指定了两种方式

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;   

SELECT *
FROM table 
WHERE NOT (YourColumn <=> NULL); 

从上面我在下面写了成功运行的hql

from Patient p where p.contactNo is not null    

但是,对于第二种类型的 hql

from Patient p where not (p.contactNo <=> null)

抛出异常

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: >  

如何在 HQL 中使用 mysql null 安全相等运算符? <=>

4

1 回答 1

2

HQL 是与 MySQL 不同的语言。MySQL 运算符不一定在 HQL 中可用。

话虽如此,您可以提供 Hibernate MySQL 查询(假设您的数据库是 MySQL):

Query query = entityMangager.createNativeQuery("Some MySQL code");
List results = query.getResultList();

EntityManager是来自Java Persistence API的接口。Hibernate 有一个关于使用 JPA 的教程,但这里是要点:

为了拥有实体管理器,您需要META-INF/persistence.xml在类路径中添加文件。然后,在 Java EE 容器中,您将获得一个带有@PersistenceContext注释的接口实例:

@PersistenceContext(unitName = "persistenceUnit")
private EntityManager em;

在 Java EE 容器之外,您可以使用Persistence类获得一个:

EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistenceUnit");
EntityManager em = factory.createEntityManager();

在这两种情况下,都"persistenceUnit"必须是persistence.xml文件中定义的持久性单元的名称。

于 2013-10-08T11:00:12.347 回答