0

Я пытаюсь использовать пользовательский sql-сервис buider, но я не могу получить пользовательский запрос из файла default.xml. Я попытался отлаживать, но он возвращает null в sql из Student1FinderImpl. Может кто-нибудь мне помочь? Вот мой код: default.xmlНе удается получить пользовательский sql по id в liferay

<?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); 
    } 

ответ

0

Я не знаю, если имя, которое вы объявили для 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

Смежные вопросы