2016-09-29 5 views
0

私はLiferay 6.2 GA5 Community Editionを使用しています。Liferayエラーorg.hibernate.MappingException:不明なエンティティ:com.mycompany.myapp.model.MyModel

通常、私のservice.xmlにエンティティを作成し、Service Builderを実行してすべてのクラスファイルを生成しました。私はMyModelモデルでCRUD操作を試してみて、常に成功の結果を得ました。

私はレコードの出力リスト、レコードがMyModelを表すストアドプロシージャを持っています。 そして、私はこのようなストアドプロシージャことを呼び出そう:

、私は.addEntity("MyModel", MyModel.class)を置くので、それが起こったの知っている

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を取得するが、私の場合私がいつもHibernateのデフォルトモデルをMyModelにキャストしようとしていたので、がfor (MyModel o : list)になることはありません。

この種の例外を検索した後、私は@Entity注釈をMyModelに入れなければならないと言っているHibernate固有のトピックでいくつかの記事を手に入れました。しかし、Liferayでは、モデルは常にservice.xmlから生成されます。

この問題を解決するにはどうすればよいですか? service.xmlに属性がありますか、これを解決できるXMLファイルの設定はありますか?

はどうもありがとうございました

答えて

1

あなたは生の休止アクセスServiceBuilder - 生成されたエンティティを混合していますか?私はむしろあなたがServiceBuilderサイド(主にあなたから休止状態になっていない)に留まるか、全休止状態になってServiceBuilderを省略することを提案したいと思います。

ServiceBuilderには利点があります。配備されているWebアプリケーションに関係なく、すべてのプラグイン/ポートレットでAPIに簡単にアクセスできます。

+0

ありがとうございます。私は '.addEntity()'メソッドを削除して、 'query.list()'の結果に適切なキャストを行いました。 – danisupr4

関連する問題