我有一个数据库,我想从id与某个id匹配的表中检索值。我的示例代码是 `
public String getName() {SessionFactory sessionfactory=new Configuration().configure().buildSessionFactory();
Session session=sessionfactory.openSession();
session.beginTransaction();
Query qry=session.createQuery("select personaldetails.fname,personaldetails.lname from Personaldetails as personaldetails where refId=1001");
List l=(List)qry.list();
session.getTransaction().commit();
session.close();
for(int i=0;i<l.size();i++)
{
s=s+l.get(i).toString();
}
name=s;
return name;
}`
如果我运行此程序,则返回
[Ljava.lang.Object; @ 4b26fc [Ljava.lang.Object; @ 107ac1d [Ljava.lang.Object; @ 112d16
有输出。但我的数据库表包含'David''billa'
答案 0 :(得分:1)
IMHO, 在你的例子中,我定义了一个由fname和lname组成的对象。因此,您的输出不是列表而是列表,因此您可以更好地管理您的信息。
public class MyObject {
public var lname;
public var fname;
public MyObject(String lName, String fName) {
this.lname = lName;
this.fname = fName;
}
}
public String getName() {
SessionFactory sessionfactory = new Configuration().configure().buildSessionFactory();
Session session=sessionfactory.openSession();
session.beginTransaction();
Query qry=session.createQuery("select new MyObject(personaldetails.fname,personaldetails.lname) from Personaldetails as personaldetails where refId=1001");
List<MyObject> l=(List<MyObject>)qry.list();
session.getTransaction().commit();
session.close();
for(MyObject curr : l)
{
// Here you can extract using property of MyObject
s += curr.lname + " - " + curr.fname;
}
name=s;
return name;
}
答案 1 :(得分:1)
默认调用Object的toString()
方法。
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
这就是你得到[Ljava.lang.Object;@4b26fc[Ljava.lang.Object;@107ac1d[Ljava.lang.Object;@112d16
您需要覆盖toString()
实体中的Personaldetails
方法才能看到David'&amp; 'BILLA'。应该是这样的:
@Override
public void String toString(){
return this.firstName + " " + this.lastName;
}
您必须将集合转换为适当的实体列表
List<EntityType> list=(List<EntityType>)qry.list();
EntityType
是您实体的一种类型。