[Hibernate] Adicionando Dois Registros com relacionamentos

2 respostas
R

Estou tentando usar este código mas o segundo relacionamento ele não cadastra:

Código:
Session session = factory.getSession();
									Transaction tx = session.beginTransaction();
										Modelo modelo = new Modelo();
										modelo.setOleo(Double.parseDouble( getSpinOleoGerar().getValue().toString()));
										modelo.setMarca(marca);
										modelo.setNome(getTxtNomeGerar().getText());
										modelo.setArCondicionado(true);
										modelo.setDirecaoHidraulica(false);
										modelo.setPartirAno(doAno);
										modelo.setAteAno(ateAno);
										modelo.setCilindradas(getCmbCilindradasGerar().getSelectedItem().toString());
										modelo.setValvulas(getCmbCilindradasGerar().getSelectedItem().toString());
										modelo.setMotor(motor);
										session.save(modelo);
										
										for (int i = 0; i < getModelDificuldadeGerar().getSize(); i ++) {
											ModeloCategoria dificuldade = (ModeloCategoria) getModelDificuldadeGerar().get(i);
											ModeloCategoriaPK pk =dificuldade.getChaveComposta();
											pk.setModelo(modelo);
											session.save(dificuldade);
										}
										session.flush();
										 modelo = new Modelo();
										modelo.setOleo(Double.parseDouble( getSpinOleoGerar().getValue().toString()));
										modelo.setMarca(marca);
										modelo.setNome(getTxtNomeGerar().getText());
										modelo.setArCondicionado(false);
										modelo.setDirecaoHidraulica(false);
										modelo.setPartirAno(doAno);
										modelo.setAteAno(ateAno);
										modelo.setCilindradas(getCmbCilindradasGerar().getSelectedItem().toString());
										modelo.setValvulas(getCmbCilindradasGerar().getSelectedItem().toString());
										modelo.setMotor(motor);
										session.save(modelo);
										for (int i = 0; i < getModelDificuldadeGerar2().getSize(); i ++) {
											ModeloCategoria dificuldade = (ModeloCategoria) getModelDificuldadeGerar2().get(i);
											ModeloCategoriaPK pk =dificuldade.getChaveComposta();
											pk.setModelo(modelo);
											session.save(dificuldade);
										}
									tx.commit();
Meu Dao Genérico:
package com.experience.softwares.sgsc.dao;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.hibernate.Criteria;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.experience.softwares.sgsc.HibernateSessionFactory;



	public class Dao<T> {
		public final Session session;
		private final Class classe;
		
		Dao(Session session, Class classe) {
			this.session = session;
			this.classe = classe;
		}
		protected Session getSession() {
			return session;
		}
		@SuppressWarnings("unchecked")
		public Integer  adicionaPegaNumero(T u) {
			return (Integer) this.session.save(u);
		}
		
		public void  adiciona(T u) {
			 session.beginTransaction();
			 this.session.save(u);
			 session.flush();
			 session.beginTransaction().commit();
		}
		public void AdicionaOuAtualiza(T u) {
			HibernateSessionFactory.doBeginTransaction();
			this.session.saveOrUpdate( u);
			HibernateSessionFactory.doCommit();
		}
		
		public void remove(T u) {
			session.delete(u);
		}	
		
		@SuppressWarnings("unchecked")
		public T pegarUltimo(){
			Criteria criteria = session.createCriteria( this.classe );  
			criteria.addOrder( Order.desc( "cod" ) );  
			return ( T ) criteria.uniqueResult();  
		}
		@SuppressWarnings("unchecked")
		public T procura(Integer id) {
			return (T) session.get(this.classe, id);
		}
		
		public void atualiza(T u) {

			HibernateSessionFactory.doBeginTransaction();
			session.update(u);
			HibernateSessionFactory.doCommit();
		}

		
		@SuppressWarnings("unchecked")
		public List<T> listaTudo() {
			List<T> list = new ArrayList<T>();
			//try{
				list = this.session.createCriteria(this.classe).addOrder( Order.asc("cod") ).list();
		//	}catch(ObjectNotFoundException e){
			//	System.out.println("Raphael");
			//}
			return 	list;
			
		}
		
		@SuppressWarnings("unchecked")
		public List<T> listaTudoOrderBy(String Campo) {
			return this.session.createCriteria(this.classe).addOrder( Order.asc(Campo) ).list();
		}
		
		@SuppressWarnings("unchecked")
		public T search(String login, String senha) {
			return (T) session.createCriteria(this.classe).add(
					Restrictions.eq("login", login)).add(
					Restrictions.eq("senha", senha)).uniqueResult();
		}
		
		@SuppressWarnings("unchecked")
		public List<T> procuraCampos(String campo, String valor) {
			String hql = "from "+ this.classe.getSimpleName() +" where "+campo+" LIKE '%" + valor+ "%'";
		    Query query = session.createQuery(hql);
		    return query.list();
		}
		
		@SuppressWarnings("unchecked")
		public List<T> listaAniversariantes(Date dia) {
			 String DiaInicio,MesInicio,DiaTermino,MesTermino;
				DiaInicio = new SimpleDateFormat("dd").format(dia.getTime());
				DiaTermino = new SimpleDateFormat("dd").format(dia.getTime());
				MesInicio = new SimpleDateFormat("MM").format(dia.getTime());
				MesTermino = new SimpleDateFormat("MM").format(dia.getTime());
				String SQL = "Select * FROM "+ this.classe.getSimpleName() +" Where (Extract(Month From DtaNascimento) + (Extract(Day From DtaNascimento) / 100.00)) between ("+MesInicio+" + ("+DiaInicio+" / 100.00)) and ("+MesTermino+" + ("+DiaTermino+" / 100.0))";
				return this.session.createSQLQuery(SQL).addEntity(this.classe).list();

		}
		
		public int excluirRegistro(String cod){
			String hql = "delete from "+ this.classe.getSimpleName() +" where cod = :cod";
		    Query query = session.createQuery(hql).setString("cod", cod);
		    int row = query.executeUpdate();
		    return row;
		}
	
}

2 Respostas

R

Por favor galera eh mto urgente… :cry:

R

Fiz um códgio novo mas ainda não resolveu...o 2º Modelo ele gera mas os seus relaciomentos não...

HibernateSessionFactory.doBeginTransaction();
Modelo modelo = new Modelo();
modelo.setOleo(Double.parseDouble( getSpinOleoGerar().getValue().toString()));
modelo.setMarca(marca);
modelo.setNome(getTxtNomeGerar().getText());
modelo.setArCondicionado(true);
modelo.setDirecaoHidraulica(true);
modelo.setPartirAno(doAno);
modelo.setAteAno(ateAno);
modelo.setCilindradas(getCmbCilindradasGerar().getSelectedItem().toString());
modelo.setValvulas(getCmbValvulaGerar().getSelectedItem().toString());
modelo.setMotor(motor);
modelo.setModeloscategorias(new ArrayList<ModeloCategoria>());
for (int i = 0; i < getModelDificuldadeGerar().getSize(); i ++) {
	ModeloCategoria dificuldade = (ModeloCategoria) getModelDificuldadeGerar().get(i);
	ModeloCategoriaPK pk =dificuldade.getChaveComposta();
	pk.setModelo(modelo);
	modelo.getModeloscategorias().add(dificuldade);
}
factory.getSession().save(modelo);
HibernateSessionFactory.doCommit();
									
									
									
//Inicia a criação do Modelo s/AC e c/DH
									
HibernateSessionFactory.doBeginTransaction();
Modelo modelo2 = new Modelo();
modelo2.setOleo(Double.parseDouble( getSpinOleoGerar().getValue().toString()));
modelo2.setMarca(marca);
modelo2.setNome(getTxtNomeGerar().getText());
modelo2.setArCondicionado(false);
modelo2.setDirecaoHidraulica(true);
modelo2.setPartirAno(doAno);
modelo2.setAteAno(ateAno);
modelo2.setCilindradas(getCmbCilindradasGerar().getSelectedItem().toString());
modelo2.setValvulas(getCmbValvulaGerar().getSelectedItem().toString());
modelo2.setMotor(motor);
modelo2.setModeloscategorias(new ArrayList<ModeloCategoria>());

for (int i = 0; i < getModelDificuldadeGerar().getSize(); i ++) {
	ModeloCategoria dificuldade = (ModeloCategoria) getModelDificuldadeGerar().get(i);
	ModeloCategoriaPK pk =dificuldade.getChaveComposta();
	pk.setModelo(modelo2);
	modelo2.getModeloscategorias().add(dificuldade);
}
factory.getSession().save(modelo2);
HibernateSessionFactory.doCommit();
Criado 17 de dezembro de 2007
Ultima resposta 18 de dez. de 2007
Respostas 2
Participantes 1