Pessoal segue o meu codigo:
[code]package pacote;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class TesteJPA {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("teste");
EntityManager manager = factory.createEntityManager();
ClientePessoaFisica fisica = new ClientePessoaFisica();
fisica.setId(1);
fisica.setCPF("123");
manager.getTransaction().begin();
manager.persist(fisica);
manager.getTransaction().commit();
}
}
[/code]
[code]package pacote;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = “cliente”)
public abstract class Cliente {
@Id
@Column(name = "id")
protected Integer id;
@Column(name = "cliente_tipo_id")
protected Integer idTipo;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getIdTipo() {
return idTipo;
}
}
[/code]
[code]package pacote;
import javax.persistence.Column;
public class ClientePessoaFisica extends Cliente {
public String getCPF() {
return CPF;
}
public void setCPF(String cPF) {
CPF = cPF;
}
public ClientePessoaFisica() {
this.idTipo = 1; /* SENDO O ID DO TIPO PESSOA FISICA = 1 */
}
@Column(name = "identificador")
private String CPF;
}[/code]
[code]package pacote;
import javax.persistence.Column;
public class ClientePessoaFisica extends Cliente {
public String getCPF() {
return CPF;
}
public void setCPF(String cPF) {
CPF = cPF;
}
public ClientePessoaFisica() {
this.idTipo = 1; /* SENDO O ID DO TIPO PESSOA FISICA = 1 */
}
@Column(name = "identificador")
private String CPF;
}[/code]
modelagem do meu banco:
[code]SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=‘TRADITIONAL’;
CREATE SCHEMA IF NOT EXISTS teste
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE teste
;
– Table teste
.TipoCliente
CREATE TABLE IF NOT EXISTS teste
.TipoCliente
(
id
INT NOT NULL AUTO_INCREMENT ,
descricao
VARCHAR(45) NOT NULL ,
PRIMARY KEY (id
) )
ENGINE = InnoDB;
– Table teste
.Cliente
CREATE TABLE IF NOT EXISTS teste
.Cliente
(
id
INT NOT NULL ,
identificador
VARCHAR(45) NOT NULL ,
cliente_tipo_id
INT NOT NULL ,
PRIMARY KEY (id
) ,
INDEX fk_Cliente_TipoCliente
(cliente_tipo_id
ASC) ,
CONSTRAINT fk_Cliente_TipoCliente
FOREIGN KEY (cliente_tipo_id
)
REFERENCES teste
.TipoCliente
(id
)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
[/code]
STACK
[quote]log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread “main” java.lang.IllegalArgumentException: Unknown entity: pacote.ClientePessoaFisica
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:853)
at pacote.TesteJPA.main(TesteJPA.java:21)
[/quote]
Alguma ideia? :~