Java 使用另一个表中的外键休眠映射主键
我在创建一个表的映射时遇到以下问题,其中它的主键是另一个表的外键 表TPESSOA数据库MySqlJava 使用另一个表中的外键休眠映射主键,java,hibernate,jsf,jakarta-ee,Java,Hibernate,Jsf,Jakarta Ee,我在创建一个表的映射时遇到以下问题,其中它的主键是另一个表的外键 表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` d
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
)
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
)
表TUSUARIO数据库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
)
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
)
类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;
普通班
@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;
尝试从
Usuario
类中删除referencedColumnName
属性。谢谢Omar。就是这样。由于类中的其他映射,我经常继续此错误。不客气。如果是不同的错误,请在新问题中发布。