Olá, estou tendo problemas ao salvar dados de um formulário. O problema é que ao salvar os dados no front-end os dados vão para suas respectivas tabelas. No caso, são duas. Uma tem que ter a chave primaria de uma outra. Mas ao salvar não é possivel adicionar a chave estrangeira de uma forma automatica. Creio que é na minha implementação do controller. Peço a ajuda de quem souber fazer isso.
@Column(name="nome")@Size(min=5,max=35,message="O nome deve conter no minimo 5 caracteres")@NotNull(message="o campo nome não pode ser nulo")privateStringnome;@Column(name="cpf")@Size(max=14)@NotBlank(message="O cpf não pode ser vazio")@NotNull(message="o campo cpf não pode ser nulo")privateStringcpf;@Column(name="rg")@Size(max=12)@NotBlank(message="O rg não pode ser vazio")@NotNull(message="o campo rg não pode ser nulo")privateStringrg;@Column(name="rua")@Size(max=10)@NotBlank(message="O rua não pode ser vazio")@NotNull(message="o campo rua não pode ser nulo")privateStringrua;@Column(name="numero")@NotNull(message="o campo numero não pode ser nulo")privateShortnumero;@Column(name="bairro")@Size(max=30)@NotBlank(message="O bairro não pode ser vazio")@NotNull(message="o campo bairro não pode ser nulo")privateStringbairro;@Column(name="cep")@Size(max=10)@NotBlank(message="O cep não pode ser vazio")@NotNull(message="o campo cep não pode ser nulo")privateStringcep;@Column(name="complemento")@Size(max=10)@NotBlank(message="O complemento não pode ser vazio")@NotNull(message="o campo complemento não pode ser nulo")privateStringcomplemento;@Column(name="telefone")@Size(max=13)@NotBlank(message="O telefone não pode ser vazio")@NotNull(message="o campo telefone não pode ser nulo")privateStringtelefone;@Column(name="celular")@Size(max=14)@NotBlank(message="O celular não pode ser vazio")@NotNull(message="o campo celular não pode ser nulo")privateStringcelular;@Column(name="email")@Size(max=100)@NotBlank(message="O email não pode ser vazio")@NotNull(message="o campo email não pode ser nulo")privateStringemail;//inserirchaveestrangeira
}
E aonde esta a chave primaria:
@Data @MappedSuperclass
public class GenericDomain {
Continua não adicionando a chave primaria da tabela pessoa. Ou seja, não tornando ela como estrangeira.
T
Tiozera
pessoa_codigo é a chave estrangeira amigo ‘-’
J
JamesplayHard
sim, mas para ser chave estrageira na tabela cliente ele tem que pegar a chave primaria da tabela pessoa. Foi isso que eu quiz dizer. Pois para ser chave estrangeira a mesma chave tem que esta em uma outra tabela sendo ela uma chave primaria.
T
Tiozera
vc ta fazendo o front em que ? thymeleaf ?
J
JamesplayHard
sim, front-and em com o thymeleaf, bootstrap html e CSS.
T
Tiozera
entendi agora, é o seguinte, vc ta passando duas classe no como paramento, só precisa de apenas uma que é onde está a chave estrangeira, o spring ele já consegue mapear automaticamente, basta passar o objeto correto na sua view
J
JamesplayHard
Poderia me orientar como fazer isso?
T
Tiozera
basta tirar o cliente cliente
T
Tiozera
na verdade, tu quer salvar um cliente, então tira o Pessoa pessoa
pois em cliente vc tem a PK de pessoa
T
Tiozera
ai lá no teu form tu bota th:object="${cliente}"
e depois tu passa os inputs com th:field=“com os objetos da classe modelo”
th:field="*{dataCadastro}"
no outro input bota os status th:field="*{status}"
no outro tu bota pessoa th:field="*{pessoa}" e etc