我正在使用Liferay 6.2 GA5 Community Edition。Liferay錯誤org.hibernate.MappingException:未知實體:com.mycompany.myapp.model.MyModel
我通常在我的service.xml
中創建實體,運行Service Builder,併成功生成所有類文件。我在MyModel模型中嘗試了任何CRUD操作並總是獲得成功結果。
我有一個存儲過程,其輸出記錄列表,一條記錄表示MyModel。 然後我嘗試調用存儲過程是這樣的:
SessionFactory sessionFactory = (SessionFactory) PortalBeanLocatorUtil.locate("liferaySessionFactory");
Session session = null;
try {
session = sessionFactory.openSession();
SQLQuery query = session.createSQLQuery("{ CALL dbo.USP_GET_CHILD(:abc) }");
query.addEntity("MyModel", MyModel.class).setString("abc", "aaa");
List<MyModel> list = (List<MyModel>) query.list();
_log.info("size: " + list.size());
for (MyModel o : list) {
_log.info("result: " + o.getFullName());
}
} catch (Exception e) {
_log.error(e.getMessage(), e);
}
從上面的代碼中,我在行query.list()
得到錯誤org.hibernate.MappingException: Unknown entity: com.mandiri.ipsplus.model.MyModel
我知道這事,因爲我把.addEntity("MyModel", MyModel.class)
,
但如果我沒有這樣做,我總是會得到ClassCastCastException
在線for (MyModel o : list)
,因爲我試圖將Hibernate默認模型轉換爲MyModel。
搜索到這種異常後,我在Hibernate特定的主題中找到了一些文章,說我必須在MyModel中註釋@Entity
。但在Liferay中,模型將始終從service.xml
生成,對吧?
如何解決這個問題? service.xml
或任何可解決此問題的XML文件配置中是否有任何屬性?
非常感謝您
謝謝,我已經刪除了'.addEntity()'方法,並且對'query.list()'的結果進行了適當的轉換,現在它已經可以工作了 – danisupr4