解决方案 »

  1.   

    ambiguous模棱两可的,不知道对应哪个表的name列。改为
    select u.name as uname,p.name as pname
    from user u left join passenger p on p.user_id = u.id
      

  2.   

    这不就是我说的第二个情况么
    报这个
    2013-08-30 14:02:13,279 INFO [org.hibernate.type.StringType] - <could not read column value from result set: name; Column 'name' not found.>
    2013-08-30 14:02:13,281 WARN [org.hibernate.util.JDBCExceptionReporter] - <SQL Error: 0, SQLState: S0022>
    2013-08-30 14:02:13,282 ERROR [org.hibernate.util.JDBCExceptionReporter] - <Column 'name' not found.>
      

  3.   

    Column 'name' not found
    错误类型又不一样了。
      

  4.   

    select u.name as uname, p.name as pname 
    from passenger p 
    left join order o on p.order_id = o.id 
    left join user u on o.user_id = u.id
    这样连接有问题吗
      

  5.   

    比如你用select u.name as uname,p.name as pname这样就会产生后面的值覆盖前面的值,我一般是这样用的select ifnull(u.name,''),ifnull(p.name,'')
    我当时也查了很多资料都没有说这个问题是怎么回事,只有自己debug,发现应该是hibernate在处理列名的时候,用的是resultSetMetaData.getColumnLabel(),而当查询的只有一列的时候,比如u.name,p.name这些都是单列的查询,那么就算加了别名,ColumnLabel仍然是name,而不会是uname,pname,所以只要把查询方式变成一个函数或者表达式就行了。
      

  6.   

    我也遇到过这样的问题!!不知道Hibernate的Sql查询是怎么做处理的!!