Как получить все значения строк в спящем режиме? - PullRequest
0 голосов
/ 26 мая 2011

Я пишу следующий код для получения значений из базы данных, используя Hibernate

try {
    System.out.println("In getDetails() try block");
    configuration = new Configuration();
    configuration.configure("resources\\hibernate.cfg.xml");

    sessionFactory = cfg.buildSessionFactory();
    session = sessionFactory.openSession();

    Query query = session.createQuery("from ServiceManagerDetails");

    List l = query.list();
    Iterator i1 = l.iterator();

    ServiceManagerDetails smd = null;
    while (i1.hasNext()) {
        smd = (ServiceManagerDetails)i1.next();
        System.out.println(smd.getServiceMode());
    }                
} catch (Exception e) {
    System.out.println("Error:- "+e);
    //tx.rollback();
    e.printStackTrace();
} finally {
    session.close();
}

Есть две записи, но я получаю значение одной строки дважды.Но я получил значение обеих строк.Пожалуйста, помогите мне выяснить, чего мне не хватает.Спасибо

1 Ответ

0 голосов
/ 25 февраля 2012

Я подозреваю, что у вас сопоставлена ​​ассоциация one-to-many, в которой вы указали метод fetch="select".Спящий режим с этим будет извлекать родительский объект для каждой из связанных записей.

Query query = session.createQuery("from ServiceManagerDetails")
    .SetResultTransformer(CriteriaSpecification.DistinctRootEntity);

Должен выполнить трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...