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;
}
}
---