2014-12-02 2 views
1

У меня есть лица декларации службы, которая заключается в следующем:Liferay CustomSQL таблица не существует

<entity name="MyContentRepo" local-service="true" remote-service="true" table="contentrepo"> 
</entity> 

Я пытаюсь использовать пользовательские SQL для извлечения некоторых деталей:

session = openSession(); 
String sqlQueryString = CustomSQLUtil.get("query_id"); 
SQLQuery query = session.createSQLQuery(sqlQueryString); 
query.addEntity("MyContentRepo", MyContentRepoImpl.class); 
QueryPos qPos = QueryPos.getInstance(query); 
qPos.add("someparameter"); 
list = (List<MyContentRepo>) query.list(); 

Но я получаю при исполнении:

08:02:26,640 ERROR [http-bio-8090-exec-72][JDBCExceptionReporter:82] Table 'mysqldb.mycontentrepo' doesn't exist 
com.liferay.portal.kernel.dao.orm.ORMException: org.hibernate.exception.SQLGrammarException: could not execute query 

В запросе принимается имя объекта, объявленного не в таблице = "contentrep о». может ли кто-нибудь сказать мне, как обойти эту проблему?

+0

Согласно https://docs.jboss.org/hibernate/orm/3.6/javadocs/ org/hibernate/SQLQuery.html # addEntity% 28java.lang.String,% 20java.lang.Class% 29 вы должны предоставить первый аргумент в методе addEntity как псевдоним таблицы. Попробуйте указать имя таблицы, она должна работать –

ответ

1

AddEntity после перевода SQLQuery в QueryPos. Измените код, как указано ниже:

session = openSession();

String sqlQueryString = CustomSQLUtil.get("query_id"); SQLQuery query = session.createSQLQuery(sqlQueryString);

QueryPos qPos = QueryPos.getInstance(query); qPos.add("someparameter");

query.addEntity("MyContentRepo", MyContentRepoImpl.class); list = (List<MyContentRepo>) query.list();

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

  • Нет связанных вопросов^_^