Таблица 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

Запрос принимает имя объекта, объявленное не table="contentrepo". может кто подскажет как обойти эту проблему?


person Debopam Mitra    schedule 02.12.2014    source источник
comment
Согласно docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/ вы должны предоставить первый аргумент в методе addEntity как псевдоним таблицы. Попробуйте указать имя самой таблицы, оно должно работать   -  person Pankaj Kathiriya    schedule 02.12.2014


Ответы (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();

person Parkash Kumar    schedule 03.12.2014