Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 使用hql从数据库检索值?_Hibernate_Hql_Hibernate Mapping - Fatal编程技术网

Hibernate 使用hql从数据库检索值?

Hibernate 使用hql从数据库检索值?,hibernate,hql,hibernate-mapping,Hibernate,Hql,Hibernate Mapping,我有一个数据库,我想从id与某个id匹配的表中检索值 ` public String getName(){SessionFactory SessionFactory=new Configuration().configure().buildSessionFactory(); Session Session=sessionfactory.openSession(); session.beginTransaction(); Query qry=session.createQuery(“从person

我有一个数据库,我想从id与某个id匹配的表中检索值 `

public String getName(){SessionFactory SessionFactory=new Configuration().configure().buildSessionFactory();
Session Session=sessionfactory.openSession();
session.beginTransaction();
Query qry=session.createQuery(“从personaldetails中选择personaldetails.fname,personaldetails.lname作为personaldetails,其中refId=1001”);
List l=(List)qry.List();
session.getTransaction().commit();
session.close();
对于(int i=0;iIMHO,
在你的例子中,我定义了一个由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;
}
公共类MyObject{
公共变量名称;
公共变量fname;
公共MyObject(字符串lName,字符串fName){
this.lname=lname;
this.fname=fname;
}
}
公共字符串getName(){
SessionFactory SessionFactory=新配置().configure().buildSessionFactory();
Session Session=sessionfactory.openSession();
session.beginTransaction();
Query qry=session.createQuery(“从personaldetails中选择新的MyObject(personaldetails.fname,personaldetails.lname)作为personaldetails,其中refId=1001”);
List l=(List)qry.List();
session.getTransaction().commit();
session.close();
对于(当前对象:l)
{
//在这里,您可以使用MyObject的属性进行提取
s+=当前名称+“-”+当前名称;
}
name=s;
返回名称;
}
默认情况下调用对象的
toString()
方法

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
这就是为什么会得到
[Ljava.lang.Object;@4b26fc[Ljava.lang.Object;@107ac1d[Ljava.lang.Object;@112d16

您需要覆盖
Personaldetails
实体中的
toString()
方法,才能看到David'和'billa'。应该如下所示:

@Override
public void String toString(){
    return this.firstName + " " + this.lastName;  
}
您必须将集合强制转换为适当的实体列表

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

EntityType
是您实体的一种类型。

我接受您的观点,但它在
for(MyObject curr:l)
@PSK:i不尝试执行,但逻辑正常。尝试显示查询结果,peraphs在MyObject中无法正确转换。
List<EntityType> list=(List<EntityType>)qry.list();