Olá pessoal!!
Sou novo no site e estou iniciando na programação web com J2EE e estou tendo problemas na hora de persistir e consultar dados em um banco de dados PostgreSQL. Eis o meu cenário:
Oracle TopLink Essentials - 2.0.1
GlassFish V2
PostgreSQL 8.2
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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 persistence_1_0.xsd">
<persistence-unit name="Teste3PU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<non-jta-data-source>Teste3PU</non-jta-data-source>
<class>com.the3dtooh.Teste</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="toplink.jdbc.driver" value="org.postgresql.Driver"/>
<property name="toplink.jdbc.url" value="jdbc:postgresql://127.0.0.1:5432/teste"/>
<property name="toplink.jdbc.password" value="1234"/>
<property name="toplink.jdbc.user" value="3dtooth"/>
</properties>
</persistence-unit>
</persistence>
Tabela Teste do Banco
@Entity
@Table(name = "teste")
@NamedQueries({@NamedQuery(name = "Teste.findById", query = "SELECT t FROM Teste t WHERE t.id = :id"), @NamedQuery(name = "Teste.findByNome", query = "SELECT t FROM Teste t WHERE t.nome = :nome")})
public class Teste implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "id", nullable = false)
private Short id;
@Column(name = "nome")
private Serializable nome;
public Teste() {
}
public Teste(Short id) {
this.id = id;
}
public Short getId() {
return id;
}
public void setId(Short id) {
this.id = id;
}
public Serializable getNome() {
return nome;
}
public void setNome(Serializable nome) {
this.nome = nome;
}
}
E parte onde eu tendo acessar o banco
O que está acontecendo é que na hora que ele vai gravar no banca dá o seguinte Erro:
javax.persistence.RollbackException: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (04/11/2008))): oracle.toplink.essentials.exceptions.DatabaseException Internal Exception: org.postgresql.util.PSQLException: ERROR: column "nome" is of type character varying[] but expression is of type bytea Error Code: 0 Call: INSERT INTO teste (id, nome) VALUES (?, ?) bind => [8, [B@1e8108e] Query: InsertObjectQuery(com.the3dtooh.Teste[id=8])
E quando eu tiro o controle de transação retorna este erro:
java.lang.IllegalArgumentException: Object: com.the3dtooh.Teste[id=5] is not a known entity type
Alguém faz idéia do qua pode ser?? Eu usei este mesmo código pra um banco Mysql e consegui fazer todas as operações de cadastrar e consultar e com o postgree não estou conseguindo.
Obrigado!!!