今晚踩了一个坑,在此记录一下:
先看数据库,我们一共用3张表:
1、taone:
2、tatwo:
3、tathree:
我们的目标是:
SQL语句:
select a.age,b.name,c.sex
from taone a,tatwo b,tathree c
where a.id = b.id and b.age = c.age;
Java中用hibernate的代码是:
public static List findbyid() {
Session session = null;
Transaction ta = null;
try {
session = HibernateSessionFactory.getSession();
ta = session.beginTransaction();
String hql = "select a.age,b.name,c.sex ";
String sql = " from Taone a,Tatwo b,Tathree c "
+ " where a.id = b.id and b.age = c.age ";
Query query = session.createQuery(hql+sql);
System.out.println("query.list().size()="+query.list().size());
List<Object[]> objects = query.list();
System.out.println("objects.size()="+objects.size());
List<NameBean> mylist = new LinkedList<NameBean>();
NameBean ab;
for(Object[] object:objects){
System.out.println(object.length);
ab = new NameBean();
ab.setAge((String) object[0]);
ab.setName((String)object[1]);
ab.setSex((String)object[2]);
mylist.add(ab);
}
ta.commit();
System.out.println(new Gson().toJson(mylist));
return query.list();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
ta.rollback();
return null;
}finally {
if (session!=null) {
session.close();
}
}
}
NameBean
public class NameBean {
String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
String name;
String sex;
}
打完收工:
[{"age":"11 ","name":"a1 ","sex":"1 "},{"age":"22 ","name":"a2 ","sex":"2 "}]
在线解析一下:
[
{
"age": "11 ",
"name": "a1 ",
"sex": "1 "
},
{
"age": "22 ",
"name": "a2 ",
"sex": "2 "
}
]