Cascade persistindo todos os objetos

0 respostas
faeldix

Segue a classe com o metodo main()

package br.com.testes;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.bean.Departamento;
import br.com.bean.Estado;
import br.com.bean.Funcionario;
import br.com.bean.Usuario;

public class Testes {

	/**
	 * @param args
	 * @throws ParseException 
	 * @throws IOException 
	 */
	
	public static void main(String[] args) throws ParseException, IOException {
		
		EntityManagerFactory fac = Persistence.createEntityManagerFactory("MeuBanco");
		EntityManager manager = fac.createEntityManager();
		
		manager.getTransaction().begin();
		
		/*Funcionario f1 = new Funcionario();
		f1.setNome("Daniel");
		Funcionario f2 = new Funcionario();
		f2.setNome("Rafael");
		Funcionario f3 = new Funcionario();
		f3.setNome("Natanael");
		
		Departamento dep = new Departamento();
		dep.getFuncionarios().add(f1);
		dep.getFuncionarios().add(f2);
		dep.getFuncionarios().add(f3);
		dep.setSetor("Cozinha");
		
		manager.persist(dep);*/
		
		Usuario user = new Usuario();
		user.setEmail("[email removido]");
		
		Estado est = new Estado();
		est.setNome("euricon");
		
		[b]manager.persist(user);[/b]
        
        manager.getTransaction().commit();
        manager.close();
        fac.close();
		
	}

}

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
 
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	
    <persistence-unit name="MeuBanco" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>br.com.bean.Usuario</class>
        <class>br.com.bean.Estado</class>
[b]        <class>br.com.bean.Departamento</class>
        <class>br.com.bean.Funcionario</class>[/b]
		<exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/MeuBanco"/>
            <property name="javax.persistence.jdbc.user" value="root" />
            <property name="javax.persistence.jdbc.password" value="admin" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

quando eu persisto o usuario la em cima.. eu persisto todas as outras classes.. mas pq?
Eu utilizei um cascade sim.. mas foi em outra tabela que nao tem nada a ver..

no caso essa:

package br.com.bean;

import java.util.ArrayList;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;

import org.hibernate.annotations.Cascade;

@Entity
public class Departamento {
	
	@Id @GeneratedValue
	private Long id;
	private String setor;
	[b]@OneToMany(cascade=CascadeType.PERSIST)[/b]
	@JoinTable(name="Departamento_Funcionario",
		joinColumns=@JoinColumn(name="dep_id"),
		inverseJoinColumns=@JoinColumn(name="func_id"))
	private Collection<Funcionario> funcionarios;
	
	public Departamento() {
		this.funcionarios = new ArrayList<Funcionario>();
	}
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getSetor() {
		return setor;
	}
	public void setSetor(String setor) {
		this.setor = setor;
	}
	public Collection<Funcionario> getFuncionarios() {
		return funcionarios;
	}
	public void setFuncionarios(Collection<Funcionario> funcionarios) {
		this.funcionarios = funcionarios;
	}
	
	

}

Mas nao consegui entender o que uma tem a ver com a outra?

___

Outra duvida:

public class Testes {

	/**
	 * @param args
	 * @throws ParseException 
	 * @throws IOException 
	 */
	
	public static void main(String[] args) throws ParseException, IOException {
		
		EntityManagerFactory fac = Persistence.createEntityManagerFactory("MeuBanco");
		EntityManager manager = fac.createEntityManager();
		
		manager.getTransaction().begin();

		Contato c1 = manager.find(Contato.class, 1);
		c1.setNome("Nome Novo");
        
        manager.getTransaction().commit();
        manager.close();
        fac.close();

no banco nao era pra ficar "nome novo"?????????

Criado 4 de fevereiro de 2012
Respostas 0
Participantes 1