Не могу получить пользовательский sql по id в liferay
Я пытаюсь использовать пользовательский sql сервисного буфера, но не могу получить пользовательский запрос из файла default.xml. Я пытался отладить, но он возвращает ноль при sql Student1FinderImpl . Может кто-нибудь мне помочь? Вот мой код: default.xml
<?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);
}
1 ответ
Я не знаю, является ли имя, которое вы объявили для 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/