2

我有一个数据库,我想从 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'

4

2 回答 2

1

默认情况下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' & 'billa'。应该是这样的:

@Override
public void String toString(){
    return this.firstName + " " + this.lastName;  
}

而且您必须将集合转换为适当的实体列表

List<EntityType> list=(List<EntityType>)qry.list();

EntityType是您的实体的一种类型。

于 2013-09-18T09:47:03.530 回答
1

恕我直言,在您的情况下,我定义了一个由 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;
}
于 2013-09-18T09:38:10.467 回答