Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在hibernate中编写搜索查询_Java_Hibernate_Search - Fatal编程技术网

Java 如何在hibernate中编写搜索查询

Java 如何在hibernate中编写搜索查询,java,hibernate,search,Java,Hibernate,Search,我试图在hibernate中编写一个搜索查询。我从OpenMeeting源代码获得了帮助。 所以我的问题是: public User getAllUser(String search) { String[] searchItems = search.split(" "); try { String sqlQuery = "SELECT * FROM USER u " + "WHERE u.deleted = 1 "; sqlQuery += "A

我试图在hibernate中编写一个搜索查询。我从OpenMeeting源代码获得了帮助。 所以我的问题是:

public User getAllUser(String search) {
    String[] searchItems = search.split(" ");
    try {
        String sqlQuery = "SELECT * FROM  USER u " + "WHERE u.deleted = 1 ";
        sqlQuery += "AND ( ";
        for (int i = 0; i < searchItems.length; i++) {
            if (i != 0) {
                sqlQuery += " OR ";
            }
            sqlQuery += "( " + "lower(u.last_name) LIKE '"
                    + StringUtils.lowerCase("%" + searchItems[i] + "%")
                    + "' " + "OR lower(u.first_name) LIKE '"
                    + StringUtils.lowerCase("%" + searchItems[i] + "%")
                    + "' " + "OR lower(u.username) LIKE '"
                    + StringUtils.lowerCase("%" + searchItems[i] + "%")
                    + "' " + ") ";
        }
        sqlQuery += " )";

        log.debug("sqlQuery : " + sqlQuery);
        Query query = sessionFactory.getCurrentSession().createQuery(
                sqlQuery);

        return (User) query.list().get(0);

    } catch (HibernateException e) {
        e.printStackTrace();
    }
    return null;
}
公共用户getAllUser(字符串搜索){
字符串[]searchItems=search.split(“”);
试一试{
String sqlQuery=“SELECT*FROM USER u”+“其中u.deleted=1”;
sqlQuery+=”和(“;
for(int i=0;i
上面说有一个意外的标记,但我没有找到它在哪里

所以我有两个问题:

  • 如何使其功能化
  • 如何在hibernate中使用条件和投影/限制编写搜索查询

  • 这不是hibernate查询。它是本机SQl。您应该使用createSQLQuery,如下所示

    Query query = sessionFactory.getCurrentSession().createSqlQuery(
                    sqlQuery);
    
    请参阅选择使用hibernate


    另外,我建议您使用

    这不是hibernate查询。它是本机SQl。您应该使用createSQLQuery,如下所示

    Query query = sessionFactory.getCurrentSession().createSqlQuery(
                    sqlQuery);
    
    请参阅选择使用hibernate


    另外,我建议你去看看这一切看起来都很复杂和不整洁。您考虑过使用Hibernate搜索吗?它的设计目的是让这样的查询变得简单。

    这一切看起来都非常复杂和不整洁。您考虑过使用Hibernate搜索吗?它的设计目的是让这样的查询变得简单明了。

    您可以使用:

        Query query = sessionFactory.getCurrentSession().createQuery("" +
                "select * from OdontogramaDiagnosticoModel where odontologia = :idOdontologia");
        query.setParameter("idOdontologia", "102");
        return query.list();
    
    这里演示了两件事,您应该注意:

    • 如何执行自定义查询
    • 如何参数化查询()
    另一个例子:

    sessionFactory.getCurrentSession().createCriteria(OdontologiaDiagnostico.class)
        .add(Restrictions.eq("diagnosticosClinicos", "test"));
    
    您可以使用:

        Query query = sessionFactory.getCurrentSession().createQuery("" +
                "select * from OdontogramaDiagnosticoModel where odontologia = :idOdontologia");
        query.setParameter("idOdontologia", "102");
        return query.list();
    
    这里演示了两件事,您应该注意:

    • 如何执行自定义查询
    • 如何参数化查询()
    另一个例子:

    sessionFactory.getCurrentSession().createCriteria(OdontologiaDiagnostico.class)
        .add(Restrictions.eq("diagnosticosClinicos", "test"));
    

    阅读文档和javadoc怎么样?您是否每次都会遇到此错误,或者它是在特定的搜索字符串中发生的?你能举一个导致错误的SQL输出的例子吗?嘿@perissf我没有得到它…嘿@Digbyswift我解决了它。我使用createSqlQuery方法解决了这个问题。我在看如何使用标准转换它……阅读文档和javadoc怎么样?您是否每次都会遇到此错误,或者它是在特定的搜索字符串中发生的?你能举一个导致错误的SQL输出的例子吗?嘿@perissf我没有得到它…嘿@Digbyswift我解决了它。我使用createSqlQuery方法解决了这个问题。我在寻找如何使用条件转换它…我在考虑使用hibernate搜索,但hibernate搜索是为全文搜索而设计的,到目前为止我知道。。现在我不需要全文搜索,这是公平的。我刚才评论说,您试图在代码中执行的操作是Hibernate Search的设计目标。我曾想过使用Hibernate Search,但到目前为止,Hibernate Search是为全文搜索而设计的。。现在我不需要全文搜索,这是公平的。我刚才评论说,您试图在代码中执行的操作是Hibernate搜索的设计目标。