在liferay中无法通过id获取自定义sql

问题描述:

我尝试使用服务buider的自定义sql,但无法从文件default.xml中获取自定义查询。我试图调试,但它在Student1FinderImpl的sql中返回null。谁能帮我? 这里是我的代码: default.xml中在liferay中无法通过id获取自定义sql

<?xml version="1.0" encoding="UTF-8"?> 
<custom-sql> 
     <sql id="searchByNameStudent1"> 
       <![CDATA[ 
        SELECT * FROM database_student1 WHERE name= ? 
       ]]> 
     </sql> 
    </custom-sql> 






public class Student1FinderImpl extends BasePersistenceImpl<Student1> implements Student1Finder { 
@SuppressWarnings("unchecked") 
public List<Student1> searchByName(String name,int start,int end){ 
    Session session= null; 
    String sql= ""; 
    try{ 
      //open session 
      session= openSession(); 
      //set SQL by ID 
      sql=CustomSQLUtil.get("searchByNameStudent1"); 
      SQLQuery query= session.createSQLQuery(sql); 
      query.addEntity("Student1", Student1.class); 
      query.setCacheable(false); 
      QueryPos qPos= QueryPos.getInstance(query); 
      qPos.add(name); 
      System.out.println(query); 
      return (List<Student1>) QueryUtil.list(query, getDialect(), start, end); 
    } 
    catch(Exception ex){ 
      ex.printStackTrace(); 
      return null; 
    } 
    finally{ 
      closeSession(session); 
    } 

我不知道,如果你申报的SQL查询的名称是正确的,我一直使用的开发者指南规范在我的工作,因为你缺少的在所有的命名约定SQL可能是原因,你应该尝试,因为你开发的应用程序的Liferay自己的方式

<custom-sql> 
    <sql id="com.myproject.portlet.service.persistence.Student1FinderImpl.searchByName""> 
    <![CDATA[ 
       SELECT * FROM database_student1 WHERE name= ? 
      ]]> 
    </sql> 
</custom-sql> 

也要确保default.xml目录是docroot/WEB-INF/src/custom-sql/

见:Liferay:DEVELOPING CUSTOM SQL QUERIES