結局、どういう場合に結合ひっぱってきてくれないんだろう?
userテーブルとuserDataテーブルが結合されてて
 Query q = sess.createQuery("from User as s where s.userName = :userName");
 q.setString("userName", "イチロー");
 for(Object o : q.list()){
  User user = (User)o;
  System.out.print (user.getUserName() + "-");
  System.out.println(user.getUserData().getAverage());
 }
とやると、ちゃんとuserDataからデータひっぱってきてくれるんだけど。