No pacote logic:
package org.vraptor.historia.logic;
import org.vraptor.daogeral.DaoFactory;
import org.vraptor.historia.model.Historia;
import org.vraptor.historia.model.Atividade;
import org.vraptor.daogeral.DaoInterceptor;
import java.util.List;
import org.vraptor.plugin.hibernate.Validate;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Component;
@Component(“historia”)
@InterceptedBy(DaoInterceptor.class)
public class HistoriaLogic {
//public List atividades;
private final DaoFactory factory;
public Historia historia;
public List<Historia> historias;
public HistoriaLogic(DaoFactory factory) {
this.factory = factory;
}
public void adiciona(Historia historia){
this.factory.beginTransaction();
this.factory.getHistoriaDao().adiciona(historia);
this.factory.commit();
}
/* public void editar(Historia historia) {
this.historia = this.factory.getHistoriaDao().procuraId(historia.getCodHistoria());
}*/
@Validate(params={"historia"})
public void armazena (Historia historia) {
this.factory.beginTransaction();
this.factory.getHistoriaDao().atualiza(historia);
this.factory.commit();
}
public void remove(Historia historia){
this.factory.beginTransaction();
this.factory.getHistoriaDao().exclui(historia);
this.factory.commit();
}
public void editar(Historia historia) {
this.historia = (Historia) this.factory.getHistoriaDao().procuraId(historia.getCodHistoria());
}
public void listaHistoria(){
historias = this.factory.getHistoriaDao().listaTudo();
}
public void lista(){
historias = this.factory.getHistoriaDao().listaTudo();
}
public Historia getHistoria(){
return historia;
}
public List getHistorias(){
return historias;
}
}
package org.vraptor.historia.logic;
import org.vraptor.daogeral.DaoFactory;
import org.vraptor.historia.model.Complementar;
import org.vraptor.daogeral.DaoInterceptor;
import java.util.List;
import org.vraptor.plugin.hibernate.Validate;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Component;
import org.vraptor.historia.model.Historia;
import org.vraptor.historia.model.Complementar;
@Component(“complementar”)
@InterceptedBy(DaoInterceptor.class)
public class ComplementarLogic{
private final DaoFactory factory;
public Complementar complementar;
public List<Complementar> complementares;
public ComplementarLogic(DaoFactory factory) {
this.factory = factory;
}
private Historia historia;
public Historia getHistoria(){
return historia;
}
public List getListaHistorias() {
return this.factory.getHistoriaDao().listaTudo();
}
public void adiciona(Complementar complementar){
this.factory.beginTransaction();
this.factory.getComplementarDao().adiciona(complementar);
this.factory.commit();
}
@Validate(params={"complementar"})
public void armazena(Complementar complementar) {
this.factory.beginTransaction();
this.factory.getComplementarDao().atualiza(complementar);
this.factory.commit();
}
public void remove(Complementar complementar){
this.factory.beginTransaction();
this.factory.getComplementarDao().exclui(complementar);
this.factory.commit();
}
// metodo usado para popular o select de Historias
public List<Historia> getHistorias() {
return this.factory.getHistoriaDao().listaTudo();
}
public void lista(){
complementares = this.factory.getComplementarDao().listaTudo();
}
public Complementar getComplementar(){
return complementar;
}
public List getComplementares(){
return complementares;
}
public void listaPorHistoria(Historia historia) {
this.historia = (Historia) this.factory.getHistoriaDao().procuraId(historia.getCodHistoria());
}
public void listaHistRel(Complementar complementar) {
this.historia = (Historia) this.factory.getComplementarDao().procuraId(historia.getCodHistoria());
}
}
No pacote model (está ok, pois o hibernate já criou até a tabela de relacionamento):
package org.vraptor.historia.model;
import javax.persistence.Entity;
import javax.persistence.GenerationType;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinTable;
import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.vraptor.cenario.model.Cenario;
import java.util.Set;
import org.vraptor.projeto.model.Projeto;
@Entity
public class Historia {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int codHistoria;
private String nome;
@Length(min = 0, max = 140)
private String objetivo;
private String ativGrupo;
/********************************************************************************/
/**************** Mapeando os Relacionamentos ***********************************/
/********************************************************************************/
/**** Relacionamento entre Histórias e os Fragmentos de Atividades ********************/
@OneToMany(mappedBy="historia", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private Set<Atividade> atividades;
/*************** Relacionamento entre Historia e Descricoes complementares (classe responsável) ******/
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="historia_complementar", schema="public",
joinColumns=@JoinColumn(name="codHistoria"),
inverseJoinColumns=@JoinColumn(name="codComplementar"))
private Set<Complementar> complementares;
/***************** Relacionamento entre Historia e Cenários (classe responsável) **********************/
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="historia_cenario", schema="public",joinColumns=@JoinColumn(name="codHistoria"),
inverseJoinColumns=@JoinColumn(name="codCenario"))
private Set<Cenario> cenarios;
/********************************************************************************/
/********************** Getters e Setters ***************************************/
/********************************************************************************/
public int getCodHistoria() {
return codHistoria;
}
public void setCodHistoria(int codHistoria) {
this.codHistoria = codHistoria;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getObjetivo() {
return objetivo;
}
public void setObjetivo(String objetivo) {
this.objetivo = objetivo;
}
public String getAtivGrupo() {
return ativGrupo;
}
public void setAtivGrupo(String ativGrupo) {
this.ativGrupo = ativGrupo;
}
public Set<Complementar> getComplementares() {
return complementares;
}
public void setComplementares(Set<Complementar> complementares) {
this.complementares = complementares;
}
public Set<Cenario> getCenarios() {
return cenarios;
}
public void setCenarios (Set<Cenario> cenarios) {
this.cenarios = cenarios;
}
public Set<Atividade> getAtividades() {
return atividades;
}
public void setAtividades (Set<Atividade> atividades) {
this.atividades = atividades;
}
}
package org.vraptor.historia.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.FetchType;
import javax.persistence.JoinTable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import java.util.Set;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.vraptor.projeto.model.Figura;
@Entity
public class Complementar {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int codComplementar;
private String conhecimento;
private String dificuldade;
private String contexto;
private String organizacional;
/********************************************************************************/
/**************** Mapeando os Relacionamentos ***********************************/
/********************************************************************************/
/*************** Relacionamento entre Historia e Descricoes complementares (classe responsável) ******/
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="historia_complementar", schema="public",
joinColumns={@JoinColumn(name="codComplementar")},
inverseJoinColumns={@JoinColumn(name="codHistoria")})
private Set<Historia> historias;
/************** Relacionamento entre Descricoes Complementares e Figuras***********************************/
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="figura_complementar", schema="public",
joinColumns={@JoinColumn(name="codComplementar")},
inverseJoinColumns={@JoinColumn(name="codFigura")})
private Set<Figura> figuras;
/********************************************************************************/
/********************** Getters e Setters ***************************************/
/********************************************************************************/
public int getCodComplementar() {
return codComplementar;
}
public void setCodComplementar(int codComplementar) {
this.codComplementar = codComplementar;
}
public String getConhecimento() {
return conhecimento;
}
public void setConhecimento(String conhecimento) {
this.conhecimento = conhecimento;
}
public String getDificuldade() {
return dificuldade;
}
public void setDificuldade(String dificuldade) {
this.dificuldade = dificuldade;
}
public String getContexto() {
return contexto;
}
public void setContexto(String contexto) {
this.contexto = contexto;
}
public String getOrganizacional() {
return organizacional;
}
public void setOrganizacional(String organizacional) {
this.organizacional= organizacional;
}
/********************************************************************************/
public Set<Historia> getHistorias() {
return historias;
}
public void setHistorias(Set<Historia> historias) {
this.historias = historias;
}
public Set<Figura> getFiguras() {
return figuras;
}
public void setFiguras(Set<Figura> figuras) {
this.figuras = figuras;
}
}
No pacote Dao:
package org.vraptor.historia.dao;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import java.util.List;
import org.vraptor.daogeral.Dao;
import org.vraptor.historia.model.Historia;
import org.vraptor.historia.model.Complementar;
public class HistoriaDao extends Dao{
public HistoriaDao(Session session) {
super(session, Historia.class);
}
public Historia procuraId(int codHistoria) {
return (Historia) session.load(Historia.class, codHistoria);
}
public Historia procuraPorCompl(Complementar c, Historia h) {
String hql = "select h from Historia_Complementar as h where h.codcodcomplementar = :c.codComplementar";
Query query = getSession().createQuery(hql);
query.setParameter("codHistoria", h.getCodHistoria());
return (Historia) query.uniqueResult();
}
public Historia existeUnico (Historia h) {
String hql = "select h from Historia as h where h.codProjeto = :codProjeto";
Query query = getSession().createQuery(hql);
query.setParameter("codHistoria", h.getCodHistoria());
return (Historia) query.uniqueResult();
}
public List<Historia> listar(){
Query select = session.createQuery("from Historia order by cod_historia");
return select.list();
}
}
package org.vraptor.historia.dao;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import java.util.List;
import org.vraptor.daogeral.Dao;
import org.vraptor.historia.model.Complementar;
import org.vraptor.historia.model.Historia;
public class ComplementarDao extends Dao{
public ComplementarDao(Session session) {
super(session, Complementar.class);
}
public Complementar procuraId(int codComplementar) {
return (Complementar) session.load(Complementar.class, codComplementar);
}
public Historia procuraHistoriaRel (Complementar c, Historia h) {
String hql = "select h from historia, historia_complementar where h.codhistoria = historia_complementar.codhistoria and historia_complementar.codComplementar=c.codComplementar ";
Query query = getSession().createQuery(hql);
query.setParameter("codComplementar", c.getCodComplementar());
return (Historia) query.uniqueResult();
}
public Complementar existeUnico (Complementar c) {
String hql = "select c from DescComplemHist as c where c.codComplementar =: codComplementar";
Query query = getSession().createQuery(hql);
query.setParameter("codComplementar", c.getCodComplementar());
return (Complementar) query.uniqueResult();
}
}
Se alguém puder me dar um help …
Abs