如何使用mysql空安全相等运算符< =>在HQL中? [英] How can I use mysql null safe equality operator <=> in HQL?

查看:61
本文介绍了如何使用mysql空安全相等运算符< =>在HQL中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想获取 Patient (POJO类)的联系号码不为空的记录.因此,我引用了此帖子.
在答案中指定了两种方式

I wanted to get records of Patient(POJO class) who's contact number is not null. So, I referred this post.
In the answer two ways are specified

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;   

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

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

From above I wrote below hql which runs successfully

from Patient p where p.contactNo is not null    

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

But, for 2nd type of hql

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

引发异常

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

如何使用mysql 空安全相等运算符 < => ?

How can I use mysql null safe equality operator <=> in HQL?

推荐答案

HQL是与MySQL不同的语言.HQL中不一定提供MySQL运算符.

HQL is a different language than MySQL. MySQL operators are not necessarily available in HQL.

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

This being said, you can given Hibernate MySQL queries (provided your database is MySQL):

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

EntityManager 是一个接口来自 Java持久性API .Hibernate具有有关使用JPA的教程,但这是要点:

EntityManager is an interface from the Java Persistence API. Hibernate has a tutorial about using the JPA, but here are the main points:

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

In order to have an entity manager, you need META-INF/persistence.xml file in your classpath. Then, inside a Java EE container, you get an instance of this interface with the @PersistenceContext annotation:

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

在Java EE容器之外,您可以使用持久性类:

Outside a Java EE container, you can get one with the Persistence class:

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

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

In both case, "persistenceUnit" must be the name of a persistence unit defined in your persistence.xml file.

这篇关于如何使用mysql空安全相等运算符&lt; =&gt;在HQL中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆