我想获得Patient
(POJO类)的联系号码不为空的记录。所以,我提到了post
在答案中指定了两种方式
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 safe equality operator <=>
?
答案 0 :(得分:1)
HQL是一种与MySQL不同的语言。 MySQL运算符不一定在HQL中可用。
话虽这么说,你可以给出Hibernate MySQL查询(如果你的数据库是MySQL):
Query query = entityMangager.createNativeQuery("Some MySQL code");
List results = query.getResultList();
EntityManager是来自Java Persistence API的界面。 Hibernate有一个tutorial about using the 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
文件中定义的持久性单元的名称。