public User
{
private String name;
private BigDecimal ;  //java.math.BigDecimal
public User(String name ,BigDecimal )
{
 this.name = name;
 this. = ;}
//get set 省略
}
执行查询的时候,
hql = "select new User('姓名',0) from xxxxxxxx"
提示数据类型转换错误,该怎么写这个hql语句啊。 hql = "select new User('姓名',new java.math.BigDecimal(0) )from xxxxxxxx"  也不行

解决方案 »

  1.   

    from User where name='姓名' and =0试试看
      

  2.   


    我说的不是where 后面的内容,是from前面的内容select new User('姓名',0) 这么写报错
      

  3.   

    这个user里面还有很多属性 我为了简便 就省略了 我只需要一部分new 的字段,其余的我付一个值就行
      

  4.   

    hql = "from xxxxxxxx"
    hql没有select,跟SQL的区别是HQL从FROM开始
      

  5.   

    select new User(u.name, u.age) from User as u
      

  6.   


    对 但我想给 赋初值,就是0 select new User(u.name,0) 会报错,当是integer类型的时候不报错,但我是BigDecimal类型的
      

  7.   

    new java.math.BigDecimal("0")这样看看
      

  8.   

    org.hibernate.QueryException: unexpected char: '"' [select
      

  9.   

    如果new java.math.BigDecimal('0')
    org.hibernate.hql.ast.QuerySyntaxException: unexpected token: , near line 1, column 205 [select new
      

  10.   

    你这样查询的话,返回值是一个User对象,而不是一个list;
    所以,你必须要传入该对象的ID,否则查询会报错。
      

  11.   


    select new User(u.name,0) 这样也会返回对象? 不对吧  我能收到list  并且list.get(i).为0但我的是BigDecimal类型的 这样写报错啊
      

  12.   


    User类也不是个映射的pojo类, 没有hibernate 配置文件 关系
      

  13.   

    那把类改一下呗
    public class User
    {
    private String name;
    private java.math.BigDecimal ; 
    public User(String name ,int )
    {
     this.name = name;
     this. = new java.math.BigDecimal();}}
      

  14.   

    说一下你的需求吧?!我查了百度 说 BigDecimal bd = new BigDecimal(); 默认bd是0.0但是我测试了下报错 不晓得你要查询的时候给他付初始值?那原本查询出来里面是什么数据呢?你可以在调用这个数据的时候 进行判断 然后后期在给他附上初始值我能想到的也就这样了
      

  15.   

    要做一下类型转换:
    hql = "select new User('姓名',cast(0 as big_decimal)) from xxxxxxxx"