2012-07-26 65 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