Требуется помощь в спящем режиме - PullRequest
0 голосов
/ 28 сентября 2011

Я пытался найти информацию о возврате списка с помощью Hibnerate, но не смог найти то, что соответствует тому, что я ищу, и, следовательно, нуждается в некотором совете.

У меня есть следующие классы

BPDataPK:

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

BPData:

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, который соответствует двум из первичного ключа и не первичного ключа ??

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

, если вы используете JPA для реализации спящего режима, вы делаете это

@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();
 }
1 голос
/ 28 сентября 2011

Вы не должны смотреть вокруг для получения некоторой информации.Вместо этого вам следует прочитать справочную документацию .

. Эта документация содержит полную главу, посвященную запросам с использованием языка запросов 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...