Example usage for org.hibernate FetchMode JOIN

List of usage examples for org.hibernate FetchMode JOIN

Introduction

In this page you can find the example usage for org.hibernate FetchMode JOIN.

Prototype

FetchMode JOIN

To view the source code for org.hibernate FetchMode JOIN.

Click Source Link

Document

Fetch using an outer join.

Usage

From source file:br.com.hslife.orcamento.repository.AuditoriaRepository.java

License:Open Source License

public Auditoria findById(Long id) {
    Criteria criteria = getSession().createCriteria(Auditoria.class).setFetchMode("dadosAuditoria",
            FetchMode.JOIN);
    criteria.add(Restrictions.eq("id", id));
    return (Auditoria) criteria.uniqueResult();
}

From source file:br.com.hslife.orcamento.repository.ItemDespensaRepository.java

License:Open Source License

@Override
public ItemDespensa findById(Long id) {
    Criteria criteria = getSession().createCriteria(ItemDespensa.class).setFetchMode("movimentacao",
            FetchMode.JOIN);
    criteria.add(Restrictions.eq("id", id));
    return (ItemDespensa) criteria.uniqueResult();
}

From source file:br.com.rhmanager.daoImpl.FuncionarioDAOImpl.java

@Override
public List<Funcionario> getFuncionariosBusca(String nome, String cpf, Cargo cargo) {
    Session session = null;/*from w  w w .j a v a  2  s .  com*/
    try {
        session = HibernateUtil.getSession();
        Criteria criteria = session.createCriteria(Funcionario.class);

        if (nome.length() > 0) {
            criteria.add(Restrictions.ilike("nome", "%" + nome + "%"));
        }

        if (cpf.length() > 0) {
            criteria.add(Restrictions.ilike("cpf", cpf + "%"));
        }

        criteria.setFetchMode("cargos", FetchMode.JOIN);

        return criteria.list();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    } finally {
        if (!session.isConnected()) {
            session.close();
        }
    }
}

From source file:ca.qc.cegepoutaouais.tge.pige.server.LoanTermVerificatorTask.java

License:Open Source License

@Override
public void run() {

    Boolean enabled = Boolean.parseBoolean(Configurations.getProperties()
            .getProperty(ServerConfigs.LOAN_TERM_VERIFICATOR_ENABLED, Boolean.FALSE.toString()));

    if (!enabled) {
        logger.info("Le vrificateur d'chance des emprunts est "
                + "dsactiv. Pour le ractiver, changez la valeur de la "
                + "ligne 'server.loan_verificator.enabled'  'true' dans "
                + "le fichier de configurations et redmarrez le serveur ou "
                + "bien ractiver-le  partir du menu 'Gestion' dans PIGE. "
                + "(ne ncessite pas de redmarrage).");
        return;/*from w w w . j  a v a2s.  c  om*/
    }

    logger.info("Dmarrage de la vrification des chances des emprunts...");

    Transaction tx = null;
    List<User> users = null;
    Session session = null;

    try {
        session = PigeHibernateUtil.openSession();
        tx = session.beginTransaction();

        // Activer le filtre permettant d'exclure les demandes d'emprunt
        // qui ne sont ni acceptes, ni en retard. Ce filtre est appliqu
        //  la jointure qui permet de rcuprer les demandes d'emprunt
        // associ au compte.
        Filter filter = session.enableFilter(Loan.STATUS_FILTER_2PARAM);
        filter.setParameter(Loan.STATUS_FILTER_PARAM1, LoanStatus.STATUS_LENT);
        filter.setParameter(Loan.STATUS_FILTER_PARAM2, LoanStatus.STATUS_LATE);

        // Construire et excuter la requte permettant de rcuprer les
        // comptes. Une jointure externe permet de rcuprer les demandes
        // d'emprunt du compte immdiatement dans la mme requte SQL.
        Criteria crit = session.createCriteria(User.class).setFetchMode(User.LOAN_COLLECTION_REF,
                FetchMode.JOIN);

        users = (List) crit.list();

        if (users == null) {
            users = new ArrayList();
        }

        Set userSet = new HashSet(users);
        Set loans;
        User user;
        Loan loan;

        // Construire une date et heure prdfinie afin de servir de
        // comparaison pour les chances.
        Calendar today = Calendar.getInstance();
        today.setTime(new Date());
        today.set(Calendar.MILLISECOND, 0);
        today.set(Calendar.SECOND, 0);
        today.set(Calendar.MINUTE, 0);
        today.set(Calendar.HOUR, 0);

        // Date et heure pour l'chance.
        Calendar term = Calendar.getInstance();

        // Itrer dans chaque usager contenant des emprunts en retard...
        for (Iterator<User> itr = userSet.iterator(); itr.hasNext();) {

            user = itr.next();
            loans = user.getLoans();
            boolean hasLate = false;
            int lateLoanCount = 0;
            StringBuffer lateLoansDesc = new StringBuffer("<ul>");

            // Itrer dans chacun des emprunts en retard de l'usager...
            for (Iterator<Loan> itr2 = loans.iterator(); itr2.hasNext();) {
                loan = itr2.next();

                // L'heure exacte  laquelle un emprunt devient en retard.
                // 18h00 1 milliseconde.
                term.setTime(loan.getTerm()); // Rcuprer la date.
                term.set(Calendar.MILLISECOND, 1);
                term.set(Calendar.SECOND, 0);
                term.set(Calendar.MINUTE, 0);
                term.set(Calendar.HOUR, 18);
                if (today.after(term)) {
                    logger.debug("Emprunts en retard pour " + user.toString() + ":");
                    logger.debug("   Today = " + today.getTime().toString());
                    logger.debug("   Term = " + term.getTime().toString());
                    // Changer l'tat de l'emprunt.
                    loan.setStatus(LoanStatus.STATUS_LATE);
                    hasLate = true;
                    lateLoanCount++;
                    lateLoansDesc.append(
                            "<li>Qt: " + loan.getQuantity() + ", Desc: " + loan.getDescription() + "</li>");
                }
            }

            lateLoansDesc.append("</ul><br/><br/>");

            if (hasLate) {
                // Geler le compte de l'utilisateur et indiquer un message
                // de retard.
                user.setStatus(UserStatus.STATUS_FROZEN);
                user.setServerMessage(MessageFormat.format(msgToUser, lateLoanCount));

                // Crer un envoi de courriel. Il sera envoy  la fin de la
                // vrification avec les autres retards.
                EmailService email = new EmailService();
                email.setRecipient(user.getEmail());
                email.setSubjet(
                        Configurations.getProperties().getProperty("msg.user.email.loan_lateness.subject"));
                email.setBody(MessageFormat.format(
                        Configurations.getProperties().getProperty("msg.user.email.loan_lateness.body"),
                        lateLoanCount, lateLoansDesc.toString()), true);
                email.addToBatch();
                logger.info("Le compte suivant a t gel  cause qu'il " + "contient des emprunts en retard: "
                        + user.asString());
            }

        }

        // Confirmer les changements  la base de donnes.
        tx.commit();

        sendNotifications(today);

    } catch (Exception hex) {
        logger.error(hex);
        if (tx != null) {
            tx.rollback();
        }
    } finally {
        if (session != null) {
            session.close();
        }
    }

    logger.info("Vrification termine!");

}

From source file:ca.qc.cegepoutaouais.tge.pige.server.LoginServiceImpl.java

License:Open Source License

@Override
public SessionObject logIn(String identifier, String password)
        throws LoginErrorException, MaintenanceModeException {

    logger.info("Connexion au serveur avec les informations " + "d'identification suivantes:\n"
            + "   Identifiant = " + identifier + "\n" + "   Mot de passe = xxxxxx");

    Session session = null;/*from w  w  w  .  ja va 2 s.  c  o  m*/
    Transaction tx = null;
    User user = null;
    String sid = null;

    try {

        session = PigeHibernateUtil.openSession();
        tx = session.beginTransaction();

        user = (User) session.createCriteria(User.class).add(Restrictions.eq(User.IDENTIFIER_REF, identifier))
                .setFetchMode(User.ROLE_REF, FetchMode.JOIN).uniqueResult();

        tx.commit();

        if (user == null) {
            logger.info("Compte inexistant. Identifiant: " + identifier);
            throw new LoginErrorException(LoginErrorException.ERROR_INVALID_IDENTIFIER_PASSWORD);
        }

        new UserServiceImpl().checkMaintenanceMode(user.getRole());

        String hashPwd = ServerUtil.produceSHA1(password == null ? "" : password);
        if (!hashPwd.equals(user.getPassword())) {
            Integer fails = user.getFails();
            user.setFails(fails + 1);
            if (fails.intValue() >= maxPasswordLogins && !user.isAdminAccount()) {
                // Ne doit pas continuer  monter.
                user.setFails(maxPasswordLogins);
                user.setStatus(UserStatus.STATUS_LOCKED);
                logger.info("Le compte suivant  t barr car il a atteint "
                        + "sa limite de tentative de mot de passe autorise.\n" + "Compte: " + user.asString());
            }
            tx = session.beginTransaction();
            session.update(user);
            tx.commit();
            logger.info("Mauvais mot de passe. Compte: " + user.asString());
            throw new LoginErrorException(LoginErrorException.ERROR_INVALID_IDENTIFIER_PASSWORD);
        }

        String accountStatus = user.getStatus();
        if (accountStatus.equals(UserStatus.STATUS_INACTIVE)) {
            throw new LoginErrorException(LoginErrorException.ERROR_ACCOUNT_INACTIVE);
        } else if (accountStatus.equals(UserStatus.STATUS_LOCKED)) {
            throw new LoginErrorException(LoginErrorException.ERROR_ACCOUNT_LOCKED);
        }

        // L'authentification  russie, il faut donc demander au serveur
        // un id de session et l'enregistrer au compte de l'usager afin
        // qu'il n'ait pas besoin de se r-authentifier la prochaine fois
        // s'il ne se dconnecte pas du serveur.
        sid = this.getThreadLocalRequest().getSession(true).getId();
        user.setSid(sid);

        // Rinitialiser le compteur d'chec.
        user.setFails(0);

        tx = session.beginTransaction();
        session.update(user);
        tx.commit();

        logger.info("Le client est maintenant connect! Compte: " + user.asString());

    } catch (HibernateException hex) {
        logger.error(hex);
        if (tx != null) {
            tx.rollback();
        }

    } finally {
        if (session != null) {
            session.close();
        }
    }

    // Retourner l'Id de session et la dure de vie du cookie de session
    // dans un SessionObject.
    Long cookieLifespan = GenericUtil.hoursToMilliseconds(
            Long.parseLong(Configurations.getProperties().getProperty("client.cookie.session.lifespan")));
    logger.debug("Dure de vie du cookie de session du client: " + cookieLifespan + "ms.");

    return new SessionObject(sid, cookieLifespan);
}

From source file:ca.qc.cegepoutaouais.tge.pige.server.UserServiceImpl.java

License:Open Source License

public Role getCurrentRole(HttpSession httpSession) throws PigeException {
    logger.debug("Rcupration du rle associ au thread courant...");

    if (httpSession == null) {
        throw new DisconnectedClientException();
    }//from   w  w w. jav a2  s  .  co m

    Role role = null;
    User user = null;
    Session session = null;
    Transaction tx = null;

    try {

        session = PigeHibernateUtil.openSession();
        tx = session.beginTransaction();
        user = (User) session.createCriteria(User.class).add(Restrictions.eq(User.SID_REF, httpSession.getId()))
                .setFetchMode(User.ROLE_REF, FetchMode.JOIN).uniqueResult();
        if (user != null) {
            role = user.getRole();
            tx.commit();
            logger.debug("Rcupration russie");
        } else {
            // L'usager n'est plus connect avec le session id enregistr
            // dans son compte. Il  peut-tre changer de fureteur ou chang
            // d'ordinateur. Sa session n'est donc plus valide.
            throw new DisconnectedClientException();
        }

    } catch (HibernateException hex) {
        logger.error(hex);
        if (tx != null) {
            tx.rollback();
        }
    } catch (DisconnectedClientException nlex) {
        logger.error(nlex);
        if (tx != null) {
            tx.rollback();
        }
        throw nlex;
    } finally {
        if (session != null) {
            session.close();
        }
    }

    // Vrifier si le mode maintenance est activ et si oui, vrifier s'il
    //  un rle permettant de travailler dans ce mode.
    // Cette vrification se fait ici car chaque action doit passer par ici
    // pour obtenir le rle et ainsi connatre les permissions.
    checkMaintenanceMode(role);

    return role;
}

From source file:ca.qc.cegepoutaouais.tge.pige.server.UserServiceImpl.java

License:Open Source License

/**
 * //from   ww w  .  j  av  a  2s. c o  m
 * {@inheritDoc}
 */
@Override
public Set<Tag> getAllTag() {

    HttpSession httpSession = this.getThreadLocalRequest().getSession();

    logger.debug("Rcupration de tous les libells du compte associ au " + "thead courant... Session id: "
            + httpSession.getId());

    Session session = null;
    Transaction tx = null;
    Set<Tag> tagSet = null;

    try {

        session = PigeHibernateUtil.openSession();
        tx = session.beginTransaction();

        User user = (User) session.createCriteria(User.class)
                .add(Restrictions.eq(User.SID_REF, httpSession.getId()))
                .setFetchMode(User.TAG_COLLECTION_REF, FetchMode.JOIN).uniqueResult();

        logger.info("Rcupration des libells du compte suivant: " + user.asString());

        tagSet = user.getTags();

        tx.commit();
        logger.debug("Rcupration russie!");
    } catch (HibernateException ex) {
        logger.error(ex);
        if (tx != null) {
            tx.rollback();
        }
    } finally {
        if (session != null) {
            session.close();
        }
    }

    return tagSet;

}

From source file:ca.qc.cegepoutaouais.tge.pige.server.UserServiceImpl.java

License:Open Source License

/**
 *
 * {@inheritDoc}//from  w w w .  j  ava2  s . c  o m
 */
@Override
public void updateTags(Set<Tag> tags) {

    HttpSession httpSession = this.getThreadLocalRequest().getSession();

    logger.debug("Mise  jour des libells du compte associ au " + "thead courant... Session id: "
            + httpSession.getId());

    Session session = null;
    Transaction tx = null;

    try {

        session = PigeHibernateUtil.openSession();
        tx = session.beginTransaction();

        User user = (User) session.createCriteria(User.class)
                .add(Restrictions.eq(User.SID_REF, httpSession.getId()))
                .setFetchMode(User.TAG_COLLECTION_REF, FetchMode.JOIN).uniqueResult();

        logger.info("Mise  jour des libells du compte suivant: " + user.asString());

        Set<Tag> currentTags = user.getTags();
        currentTags.retainAll(tags);
        Iterator<Tag> itr = tags.iterator();
        Tag tag;
        while (itr.hasNext()) {
            tag = itr.next();
            if (!currentTags.contains(tag)) {
                user.addTag(tag);
            }
        }

        tx.commit();
        logger.debug("Mise  jour russie!");
    } catch (HibernateException ex) {
        logger.error(ex);
        if (tx != null) {
            tx.rollback();
        }
    } finally {
        if (session != null) {
            session.close();
        }
    }

}

From source file:ch.astina.hesperid.dao.hibernate.FilterGridDataSource.java

License:Apache License

@Override
protected void applyAdditionalConstraints(Criteria criteria) {
    for (String join : joins) {
        criteria.setFetchMode(join, FetchMode.JOIN);
    }//from  w  w w.  j  a v  a 2s .  com

    for (Entry<String, String> alias : aliases.entrySet()) {
        criteria.createAlias(alias.getKey(), alias.getValue());
    }

    for (Criterion filter : filters) {
        criteria.add(filter);
    }

    if (order != null) {
        criteria.addOrder(order);
    }
}

From source file:ch.systemsx.cisd.openbis.generic.server.dataaccess.db.AbstractGenericEntityDAO.java

License:Apache License

public final T tryGetByTechId(final TechId techId, String... connections) throws DataAccessException {
    assert techId != null : "Technical identifier unspecified.";
    final Criteria criteria = getSession().createCriteria(getEntityClass());
    criteria.add(Restrictions.eq("id", techId.getId()));
    for (String connection : connections) {
        criteria.setFetchMode(connection, FetchMode.JOIN);
    }//  w w w . ja  va  2 s .  c o m
    final T result = tryGetEntity(criteria.uniqueResult());
    if (operationLog.isDebugEnabled()) {
        operationLog.debug(
                String.format("%s(%s): '%s'.", MethodUtils.getCurrentMethod().getName(), techId, result));
    }
    return result;
}