2013-04-30 38 views
1

非法參數異常有這樣一個NamedQuery:OpenJPA的:爲值對象

@NamedQuery(name = "getOpakOdeslaniForPartner", query = "select 

新com.vo.OpakOdeslaniVO(opak.pocetPokusu,opak.idSekvenceOpakovani.idOpakSekvence,opak.idSekvenceOpakovani.sekvence) 從GmOpakOdeslani OPAK,GmPrijemce prij 其中opak.idTypZpravy.idTypZpravy =:typZpravy和opak.idPrijemce = prij和prij.idPrijemceTyp.idPrijemceTyp =:typPrijemce」

值對象具有單一的構造與三個參數

有一個這樣的日誌(的WebLogic 11g中,HP-UX):

Caused by: <openjpa-1.1.1-SNAPSHOT-r422266:1172209 nonfatal user error> org.apache.openjpa.util.UserException: There was an error packing the projection and/or aggregate results of the query into result type "class com..vo.OpakOdeslaniVO". See the nested Throwable exception for details. 
    at org.apache.openjpa.kernel.ResultPacker.packUserType(ResultPacker.java:262) 
    at org.apache.openjpa.kernel.ResultPacker.pack(ResultPacker.java:225) 
    at org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:1960) 
    at com..service.OpakOdeslani.getOpakOdeslaniForPartner(.java:52) 
    at sun.reflect.GeneratedMethodAccessor1516.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 

Caused by: java.lang.IllegalArgumentException 
    at sun.reflect.GeneratedConstructorAccessor747.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.apache.openjpa.kernel.ResultPacker.packUserType(ResultPacker.java:235) ... 114 more 

其實我覺得卡住了,因爲是拋出:IllegalArgumentException沒有解釋的消息,我無法找到GeneratedConstructorAccessor747類的源代碼。任何想法,發生了什麼以及如何解決這個問題?我猜測值對象構造函數或類必定存在一些問題。

謝謝

回答

0

確保類型opak.pocetPokusu, opak.idSekvenceOpakovani.idOpakSekvence, opak.idSekvenceOpakovani.sekvence是薩姆斯類型由com.vo.OpakOdeslaniVO的構造提供。

作爲一個調試點,你可以選擇這些字段來確保數據被返回?

+0

我意識到,類型匹配:OpakOdeslaniVO(int pocetPokusu,long opakSekvence,String sekvence)。但是當我轉到SQL時,查詢沒有返回任何數據。那麼爲什麼JPA在查詢返回任何行時調用構造函數? – 2013-05-01 05:42:54

+0

opak.idSekvenceOpakovani.idOpakSekvence - opak沒有行,idSekvenceOpakovani返回的表有兩行。但我認爲,如果主表沒有數據,那麼細節表就不能匹配,可以嗎?這是奇怪的行爲,因爲1)一旦某人向細節表中插入了一行,它就開始失敗2)在主表和細表中都有行的另一個環境中,它運行正常。源代碼兩年一樣。 – 2013-05-01 06:12:00

+0

這聽起來像是有人在插入一些數據時可能會搞砸了嗎? – Rick 2013-05-01 13:14:58