Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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 需要休眠帮助_Hibernate - Fatal编程技术网

Hibernate 需要休眠帮助

Hibernate 需要休眠帮助,hibernate,Hibernate,我试着四处寻找关于使用Hibnerate返回列表的信息,但找不到与我正在寻找的内容相匹配的内容,因此需要一些建议 我有以下课程 BPDataPK: public class BPDataPK implements Serializable { private String id; private int userProfile; private Date when; ..... } public class BPData imple

我试着四处寻找关于使用Hibnerate返回列表的信息,但找不到与我正在寻找的内容相匹配的内容,因此需要一些建议

我有以下课程

BPDataPK:

  public class BPDataPK implements Serializable {
    private String id;
    private int userProfile;
    private Date when;      
         .....
  }
public class BPData implements Serializable {   
   private BPDataPK dataPK;
   private Date sessionStart;
    ...
}
BPData:

  public class BPDataPK implements Serializable {
    private String id;
    private int userProfile;
    private Date when;      
         .....
  }
public class BPData implements Serializable {   
   private BPDataPK dataPK;
   private Date sessionStart;
    ...
}
HibernateBPDataDAO:

public class HibernateBPDataDAO extends HibernateDaoSupport implements IBPDataDAO{
    ....
public BPData[] getSessionBPData(Session session) throws Exception {
        /**I need to get a list of BPData that matches the following
        1.  BPDataPK.id== session.getID;
        2.  BPDataPK.userProfile == session.getUserProfile;
        **3.  BPData.sessionStart  == session.getSessionStart();**
        */
    }
 }
如何返回匹配两个主键和一个非主键的BPData列表???

您不应该四处寻找某些信息。相反,你应该阅读这本书

本文档有一整章专门介绍使用HQL查询语言的查询,另一章专门介绍条件查询。因为这里有一组固定的标准,所以HQL更适合此任务:

String hql = "select b from BPData b where b.dataPK.id = :id"
             + " and b.dataPK.userProfile = :profile"
             + " and b.sessionStart = :sessionStart";
Query q = hibernateSession.createQuery(hql);
q.setString("id", session.getID());
q.setInt("profile", session.getUserProfile());
q.setTimestamp("sessionStart", session.getSessionStart()); // or setDate, depending on the type of this field
List<BPData> result = q.list();
String hql=“从BPData b中选择b,其中b.dataPK.id=:id”
+“和b.dataPK.userProfile=:profile”
+“和b.sessionStart=:sessionStart”;
查询q=hibernateSession.createQuery(hql);
q、 setString(“id”,session.getID());
q、 setInt(“profile”,session.getUserProfile());
q、 setTimestamp(“sessionStart”,session.getSessionStart());//或设置日期,具体取决于此字段的类型
列表结果=q.List();

如果您使用的是hibernate的JPA immplementaion,您可以这样做

@Entity
@NamedQuery(
    name="findByMyQuery",
    queryString="SELECT bpdata FROM BPData bpdata WHERE bpdata.dataPK = :sessionId AND bpdata.userProfile = :userProfile AND bpdata.sessionStart = :sessionStart "
)
public class BPData implements Serializable {

    private BPDataPK dataPK;
    private Date sessionStart;
        ...
    }


public BPData[] getSessionBPData(Session session) throws Exception {       

    Query queryFindByMyQuery = entityManager.createNamedQuery("findByMyQuery");
    queryEmployeeByFirstName.setParameter("sessionId", session.getID());
    queryEmployeeByFirstName.setParameter("userProfile", session.getUserProfile());
    queryEmployeeByFirstName.setParameter("sessionStart", session.getSessionStart());
    return queryEmployessByFirstName.getResultList().toArray();
 }

谢谢你的及时回复。但是我得到了一个意外的标记[b][选择b from…]我还访问了您提供的引用,它们也使用了与您的语法类似的模式。我忘记了b别名。我的答案是固定的。如果您阅读了文档,您可以自己找到它。再次感谢您的帮助。我没有注意到这种差异我已经简化了HQL,只检查sessionStart,但HibGenerate没有返回任何数据。在MYSQL数据库中,内容是(datetime数据类型)2011-04-29 11:43:00,使用q.setTimestamp(“sessionStart”,session.getSessionStart())进行尝试;和q.setDate(“sessionStart”,session.getSessionStart());没有成功。getSessionStart返回java.util.Date;谢谢你的及时回复,不过我对Hibernate很陌生,我不确定我是否在使用JPA。但是,为了保存和更新,我使用了getHibernateTemplate().save();