JPA...OnetoMany..dando erro java.lang.IllegalStateException: During synchronization a new object was

0 respostas
P

Olá estou tentando fazer um relacionamento onetomany

mas está dando erro abaixo coloquei e tirei Persist mas continua dando erro ]]

o que deve ser …se alguém pudr me ajudar agradeceria…

abs

[TopLink Info]: 2008.11.28 12:55:07.225--ServerSession(15290002)--TopLink, version: Oracle TopLink Essentials - 2006.8 (Build 060908)
[TopLink Info]: 2008.11.28 12:55:08.223--ServerSession(15290002)--file:/C:/workspace/TesteJPA/build/classes-exemploJPA login successful
[TopLink Warning]: 2008.11.28 12:55:08.425--UnitOfWork(23860799)--java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST.
Exception in thread "main" java.lang.IllegalStateException: 
Exception Description: No transaction is currently active
	at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.rollback(EntityTransactionImpl.java:125)
	at br.com.exemplojpa.persistencia.UniversidadeDAO.inserirUniversidade(UniversidadeDAO.java:47)
	at br.com.exemplojpa.teste.TesteUniversidade.main(TesteUniversidade.java:31)



--

@Entity @Table(name = "Universidade")
public class Universidade {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="id_universidade")
	private int id;
	private String nome;
	
	@OneToMany(mappedBy="universidade",fetch=FetchType.LAZY)


	//@Cascade(CascadeType.PERSIST)
	private Collection<Centro> centros;


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public String getNome() {
		return nome;
	}
--

@Entity
@Table
public class Centro {

	
	@Id @GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="id_centro")
	private int id;
	@Column
	private String nome;
	@ManyToOne(fetch = FetchType.EAGER)
	@PrimaryKeyJoinColumn
	@JoinColumn(name="id_universidade",
	insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	//@Cascade(CascadeType.PERSIST)
	@ForeignKey(name="FKCentro")
	private Universidade universidade;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;


--

import java.util.HashSet;

import br.com.exemplojpa.modelo.Centro;
import br.com.exemplojpa.modelo.Universidade;
import br.com.exemplojpa.persistencia.UniversidadeDAO;

public class TesteUniversidade {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		UniversidadeDAO dao = new UniversidadeDAO();
		
		Universidade univ = new Universidade();
		univ.setNome("Universidade Federal do Rio Grande do Norte");
		Centro centro1 = new Centro();
		centro1.setNome("Centro de Tecnologia");
		centro1.setUniversidade(univ);
		Centro centro2 = new Centro();
		centro2.setNome("Centro de Humanas");
		centro2.setUniversidade(univ);
		univ.setCentros(new HashSet<Centro>());
		univ.getCentros().add(centro1);
		univ.getCentros().add(centro2);
		
		dao.inserirUniversidade(univ);
		
		
		
	}

}
---

public class UniversidadeDAO {

	private EntityManagerFactory factory = null;

	private EntityManager manager = null;

	public UniversidadeDAO() {

		factory = Persistence.createEntityManagerFactory("exemploJPA");
		manager = factory.createEntityManager();

	}

	/**
	 * Inserindo um universidade
	 * 
	 * @param universidade
	 */
	public void inserirUniversidade(Universidade universidade) {

		EntityTransaction transaction = manager.getTransaction();

		try {
			transaction.begin();

			manager.persist(universidade);
			transaction.commit();
            System.out.println("Inclusão OK...");
		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());

		} finally {
			manager.close();
		}

	}

	/**
	 * Pesquisar um universidade
	 * 
	 * @param universidade
	 */
	public Universidade pesquisarUniversidade(Integer id, Universidade universidade) {
		EntityTransaction transaction = manager.getTransaction();

		Universidade retorno = null;

		try {

			
			transaction.begin();

			retorno = (Universidade) manager.find(Universidade.class, id);

		} catch (Exception e) {
			transaction.rollback();

			System.err.println("Erro: " + e.getMessage());
		} finally {
			manager.close();
		}

		return retorno;

	}

}

---
Criado 28 de novembro de 2008
Respostas 0
Participantes 1