ich eine benutzerdefinierte Funktion in meiner HQL Abfrage verwenden möchten, und ich eine Funktion in der Datenbank registrieren und das ist SQL-Code ist meine Funktion:Wie Hibernate Registerfunktion in HQL Abfrage verwenden
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
und es registrieren mit einer Klasse als MysqlCustomDilect:
public class MysqlCustomDilect extends MySQLDialect{
public MysqlCustomDilect() {
super();
registerFunction("getActiveUser", new StandardSQLFunction("getActiveUser"));
}
}
und fügen sie ihn mit dieser Zeile hibernate.cfg.xml Datei:
<property name="hibernate.dialect" value="myProject.common.MysqlCustomDilect" />
und es wie dieser Code in meiner dao Schicht nennen:
@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();
}
aber Hibernate es nicht weiß, und diese Fehler aus:
unexpected token: function near line 1, column 18 [ from e.id as id,function('getActiveUser') ........
wurde misstyping, ich es beheben, aber es geht nicht darum, dass –