2012-07-26 34 views
-2

我有一個HQL是這樣的:Hibernate的HQL新構造VARARGS

select new org.com.Utilities.Inventario.ReporteInventario(P.Id,P.Name,DP.Rotacion,LongResult,IntegerResult,IntegerResult,IntegerResult,IntegerResult,IntegerResult,IntegerResult,) 

,我有這樣一個構造函數:

public ReporteInventario(
     String CodPro, 
     String NomProd, 
     String RotProd, 
     Long TotalStock, 
     Integer Val1, 
     Integer Val2, 
     Integer Val3, 
     Integer Val4, 
     Integer Val5, 
     Integer Val6) 

工程確定。但我已經嘗試以下內容:

public ReporteInventario(
    String CodPro, 
    String NomProd, 
    String RotProd, 
    Long TotalStock, 
    Integer.. Array) 

但我收到不符合構造函數找到。我不是冗長的粉絲。我的問題是我可以在Hibernate可以填充的構造函數中使用Varargs。非常感謝。

+0

如果您嘗試格式化代碼以使其可讀,它將有所幫助。 – 2012-07-27 00:14:46

回答

0

它是Java嗎? (這看起來不符合你的編碼習慣)。

如果是這樣,雖然我還沒有嘗試過,但我相信你需要的是將一個Integer數組傳遞給vararg參數。因爲在Java中,可變參數實際上是一個數組,它只是編譯器幫助將「參數」更改爲數組的語法糖。

不過,我不認爲有什麼辦法在HQL

創建一個數組

因此,堅持你的第一種方法的簽名。

+0

謝謝..但我需要使用新的myClass()在HQL查詢中使用Varargs類構造函數。因爲我正在創建一個動態的HQL,有時候會返回2或3個整數...就像選擇A,B,C或A,B,C,D所有我需要的是創建一個構造函數使用Varargs創建一個構造函數事情知道我正在檢索許多整數..我想這個作品。 MyClass(字符串,字符串,長整型,VarArgs) – 2012-07-27 02:19:06

+0

還沒有嘗試,但似乎在HQL中,你可以新的列表(http://docs.jboss.org/hibernate/orm/4.1/manual/en-US /html/ch16.html,第16.6節)。將您的構造函數的方法簽名更改爲接收List而不是vararg,然後構造列表並作爲ctor參數之一傳入。不知道,如果它的工作,但值得一試我認爲 – 2012-07-27 03:16:05

+0

我已經嘗試過。選擇新的org.com.Utilities.Inventario.ReporteInventario(P.Id,P.Name,DP.Rotacion,(從DP選擇總和(DP.Stock),其中P.Id = DP.Producto.Id),新列表(從DP中選擇DP.Stock作爲Stock0,其中P.Id = DP.Producto.Id和DP.Sucursal.Id = 1200),(從DP選擇DP.Stock作爲Stock1,其中P.Id = DP.Producto.Id和DP。 (System.out.println(「Worked」);}但是iam());並將構造函數更改爲public ReporteInventario(String CodPro,String NomProd,String RotProd,Long TotalStock,java.util.List Stocks){System.out.println獲得意想不到的令牌:新列表中的新近線1,列140 – 2012-07-27 16:08:33