Olá,
estou com o erro abaixo alguém poderia me ajudar pois na hora de inserir esse objeto
deu esse erro …
Não sei se estou no caminho certo se misturei Hibernate com JPA …
se alguem puder me ajudar ???
abs
---
[TopLink Info]: 2008.11.27 01:16:27.731--ServerSession(15290002)--file:/C:/workspace/TesteJPA/build/classes-exemploJPA login successful
[TopLink Warning]: 2008.11.27 01:16:27.793--ServerSession(15290002)--Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.8 (Build 060908)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'usuario' already existsError Code: 1050
Call:CREATE TABLE Usuario (ID INTEGER AUTO_INCREMENT NOT NULL, LOGIN VARCHAR(255), PASSWORD VARCHAR(255), NOME VARCHAR(255), PRIMARY KEY (ID))
Query:DataModifyQuery()
[TopLink Warning]: 2008.11.27 01:16:27.809--ServerSession(15290002)--Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.8 (Build 060908)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'centro' already existsError Code: 1050
Call:CREATE TABLE CENTRO (id_centro INTEGER AUTO_INCREMENT NOT NULL, NOME VARCHAR(255), id_universidade INTEGER, PRIMARY KEY (id_centro))
Query:DataModifyQuery()
[TopLink Warning]: 2008.11.27 01:16:27.809--ServerSession(15290002)--Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2006.8 (Build 060908)): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'universidade' already existsError Code: 1050
Call:CREATE TABLE Universidade (id_universidade INTEGER AUTO_INCREMENT NOT NULL, NOME VARCHAR(255), PRIMARY KEY (id_universidade))
Query:DataModifyQuery()
[TopLink Warning]: 2008.11.27 01:16:27.997--UnitOfWork(13446707)--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)
---
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);
}
}
----
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.ForeignKey;
@Entity
@Table
public class Centro {
@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name="id_centro")
private int id;
private String nome;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_universidade",
insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.PERSIST)
private Universidade universidade;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Universidade getUniversidade() {
return universidade;
}
public void setUniversidade(Universidade universidade) {
this.universidade = universidade;
}
}
---
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Entity @Table(name = "Universidade")
public class Universidade {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@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;
}
public void setNome(String nome) {
this.nome = nome;
}
public Collection<Centro> getCentros() {
return centros;
}
public void setCentros(Collection<Centro> centros) {
this.centros = centros;
}
}
---
<persistence-unit name="exemploJPA" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
<class>br.com.exemplojpa.modelo.Usuario</class>
<class>br.com.exemplojpa.modelo.Centro</class>
<class>br.com.exemplojpa.modelo.Universidade</class>
<properties>
<property name="toplink.logging.level" value="INFO"/>
<property name="toplink.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/exemplojpa"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.jdbc.user" value="root"/>
<property name="toplink.jdbc.password" value="root"/>
<property name="toplink.show_sql" value="true" />
<property name="toplink.ddl-generation" value="create-tables"/>
</properties>
</persistence-unit>
---
ublic 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;
}
}
---
---