2016-12-07 81 views
4

儘管Liferay 6.2中的CustomSQLUtil類沒有問題,但我在Liferay 7中遇到了此類新版本的問題。確實,get方法返回null,而不是預期的查詢。CustomSQLUtil在使用Liferay 7進行查詢檢索期間獲得空值

有人轉載了嗎?

下面是我在Eclipse火星最後一次測試說明:

  1. 在我的Liferay工作空間中,我添加的服務模塊

compileOnly組的build.gradle以下行: 「com.liferay」,名稱:「com.liferay.portal.dao.orm.custom.sql」,版本:「1.0.5」

  1. 經過分流刷新後,我能夠使用我的CustomSQLUtil類FooFinderImpl類來檢索適當的查詢。

  2. 該查詢已被寫入作爲Liferay的7文檔中mentionned它被放入的src /自定義的SQL文件夾中的文件default.xml中:

https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/custom-sql

我已經嘗試過很多地方(在META-INF中,在資源中),我甚至試圖擴展CustomSQL本地類以獲取配置,但CustomSQLUtil類的get方法始終返回null,而不是sql查詢。 PS:我注意到這個新的「CustomSQLUtil.get」方法現在需要2個參數,除了查詢ID之外,還請求了一個類。在這個類參數中,我放置了「Foo.class」值。

有人知道是否有配置要做?是否需要配置類路徑或bundlecontext?

回答

5

要使其工作添加在foo-service/src/main/resourcescustom-sql/default.xml然後FooFinderImpl使用CustomSQLUtil這樣

CustomSQLUtil.get(getClass(),CONSTANT_QUERY_ID); //id of query in default.xml 

這是https://github.com/bruinen/liferay-services-example

+0

它的工作原理!我的錯誤是把Foo.class參數,而不是FooFinderImpl.class。 謝謝羅密歐! – Vincent

0

儘量避免使用CustomSQLUtil。相反,嘗試直接在你的查找器方法中使用查詢,如 String sql =「select * from Foo_Foo where name =?」 希望幫助!

+0

我同意這作品,未經CustomSQLUtil類在github一個例子,但我會喜歡將sql查詢保存在一個單獨的XML文件中,就像Liferay文檔中介紹的那樣。 – Vincent