我想在我的HQL查询使用自定义功能,我在数据库中注册的功能,这是我的函数的SQL代码:如何使用Hibernate寄存器功能在HQL查询
BEGIN
DECLARE user_id_var VARCHAR(64);
SELECT
e.username
FROM
users e where e.id=30 INTO user_id_var;
return user_id_var;
END
并注册一类为MysqlCustomDilect:
public class MysqlCustomDilect extends MySQLDialect{
public MysqlCustomDilect() {
super();
registerFunction("getActiveUser", new StandardSQLFunction("getActiveUser"));
}
}
,并用这条线把它添加到hibernate.cfg.xml文件:
<property name="hibernate.dialect" value="myProject.common.MysqlCustomDilect" />
并调用它像这样的代码在我DAO层:
@Override
public List<Entity> getAll() {
Session session = getSession();
String hql = " select e.id as id,function('getActiveUser') as name from " + domainClass.getName() + " e ";
Query query=session.createQuery(hql);
return query.list();
}
但Hibernate不知道它,提出这个错误:
unexpected token: function near line 1, column 18 [ from e.id as id,function('getActiveUser') ........
这是歪曲,我修复它,但它不是那个 –