我有一个以下问题来创建一个表的映射,其主键是另一个表的外键。
表TPESSOA数据库MySql
CREATE TABLE `tpessoa` (
`codigoPessoa` bigint(20) NOT NULL AUTO_INCREMENT,
`nome` varchar(200) NOT NULL,
`cpfcnj` varchar(14) NOT NULL,
`tipoPessoa` varchar(10) NOT NULL,
`dataNascimento` date NOT NULL,
PRIMARY KEY (`codigoPessoa`),
UNIQUE KEY `codigoPessoa` (`codigoPessoa`)
ENGINE=InnoDB DEFAULT CHARSET=utf8
)
表TUSUARIO数据库MySql
CREATE TABLE `tusuario` (
`codigoPessoa` bigint(20) NOT NULL,
`login` varchar(50) NOT NULL,
`senha` varchar(90) NOT NULL,
`dataCadastro` date NOT NULL,
`ativo` tinyint(1) NOT NULL,
PRIMARY KEY (`codigoPessoa`),
UNIQUE KEY `codigoPessoa` (`codigoPessoa`),
CONSTRAINT `tusuario_ibfk_1` FOREIGN KEY (`codigoPessoa`) REFERENCES `tpessoa` (`codigoPessoa`)
ENGINE=InnoDB DEFAULT CHARSET=utf8
)
Class Pessoa
@Entity
@Table(name="TPESSOA")
public class Pessoa implements Serializable {
private static final long serialVersionUID = 9187948214955817194L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long codigoPessoa;
@NotBlank(message="Campo Nome não pode ser vazio!")
private String nome;
@NotBlank(message="Campo Cpf/Cnpj não pode ser vazio!")
private String cpfCnpj;
@NotBlank(message="Campo Tipo Pessoa não pode ser vazio!")
private TipoPessoa tipoPessoa;
@NotBlank(message="Campo Data Nascimento não pode ser vazio!")
private Date dataNascimento;
Class Usuario
@Entity
@Table(name="TUSUARIO")
public class Usuario {
@Id
@OneToOne()
@JoinColumn(name="codigoPessoa", referencedColumnName="codigoPessoa")
private Pessoa pessoa;
@NotBlank(message="Campo Nome não pode ser vazio!")
private String nome;
@NotBlank(message="Campo Login não pode ser vazio!")
private String login;
private String senha;
private Date dataCadastro;
private Boolean ativo;
@NotNull(message="Campo Grupo não pode ser vaszio!")
@ManyToMany
@JoinTable(name = "TUSUARIOGRUPO", joinColumns = @JoinColumn(name = "codusr")
, inverseJoinColumns = @JoinColumn(name = "codgrp"))
private List<Grupo> grupos;
由maven部署时出现异常
15:48:19,448 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 87) MSC000001: Failed to start service jboss.persistenceunit."sgr-0.0.1-SNAPSHOT.war#sgr-pu": org.jboss.msc.service.StartException in service jboss.persistenceunit."sgr-0.0.1-SNAPSHOT.war#sgr-pu": org.hibernate.cfg.RecoverableException: Unable to find column with logical name: codigoPessoa in org.hibernate.mapping.Table(TUSUARIO) and its related supertables and secondary tables
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:179)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:121)
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:667)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:193)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: org.hibernate.cfg.RecoverableException: Unable to find column with logical name: codigoPessoa in org.hibernate.mapping.Table(TUSUARIO) and its related supertables and secondary tables
at org.hibernate.cfg.Ejb3JoinColumn.checkReferencedColumnsType(Ejb3JoinColumn.java:833)
at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:241)
at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:100)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processFkSecondPassesInOrder(InFlightMetadataCollectorImpl.java:1727)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1617)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874)
at org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:161)
... 7 more