Pessoal segue o meu codigo:
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();
}
}
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;
}
}
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;
}
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;
}
modelagem do meu banco:
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;
STACK
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)
Alguma ideia? :~
