package br.usp.ime.academicdevoir.dao;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import br.com.caelum.vraptor.ioc.Component;
import br.usp.ime.academicdevoir.entidade.QuestaoDaLista;
@Component
public class QuestaoDaListaDao {
/**
* @uml.property name="session"
* @uml.associationEnd multiplicity="(1 1)"
*/
private final Session session;
public QuestaoDaListaDao(Session session) {
this.session = session;
}
/**
* Devolve uma questão de uma lista de exercícios com o id fornecido.
*
* @param id
* @return QuestaoDaLista
*/
public Object carrega(Long id) {
return this.session.load(QuestaoDaLista.class, id);
}
/**
* Remove a questão fornecida de uma lista de exercícios.
*
* @param questao
*/
public void remove(QuestaoDaLista questao) {
Transaction tx = session.beginTransaction();
this.session.delete(questao);
tx.commit();
}
public void recarrega(QuestaoDaLista questao) {
session.refresh(questao);
}
/**
* Devolve a questao da lista referente a questao e lista de exercícios
* com o id fornecido.
*/
public QuestaoDaLista getQuestaoDaListaPorIds(Long idDaLista, Long idDaQuestao) {
return (QuestaoDaLista) this.session
.createCriteria(QuestaoDaLista.class)
.add(Restrictions.eq("listaDeExercicios.id", idDaLista))
.add(Restrictions.eq("questao.id", idDaQuestao)).uniqueResult();
}
}