Dúvida quanto a alguns erros usando TopLink

Oi pessoal.

Estou estudando JPA e me surgiram algumas dúvidas.

Eu mudei o nome da id na classe do modelo (isto é, aonde tem a annotation @Id, o nome do atributo foi modificado). Isso aparentemente altera em alguma coisa, pois estou ganhando umas exceptions legais e aparentemente tem a ver com isso. A exception que dá é essa:

Tem mais coisas, mas eu não coloco porque acredito que a resposta para a minha pergunta já deve resolver.

Outra dúvida que eu tenho é: a cada vez que o código é executado, as tabelas são criadas novamente? Eu digo isso porque tenho duas classes no modelo: Jogador e Time. E quando eu executo (isto é, apresento a lista de Times e Jogadores cadastrados), eu leio algumas exceptions (que não dão crash no sistema) que dizem o seguinte:

Na verdade, tem um Warning na frente. Mas eu gostaria de saber se isso faz alguma diferença e se eu devo tomar cuidados com esses Warnings.

Abraço.

se vc gerou o código de forma atuomatica saiba que faz bastante diferença sim trocar o nome…

todo o lugar onde tem mappedBy pode ser afetado apos a mudança no nome…

outra coisa é que ele cria um monte de consulta padrão… findById … findAll … findByEtc… nela existe String HQL onde a referencia é pelo nome do campo em Java

ou seja, se seu campo antes era codigo e agora é xucrutz, as queryByName vão dar erro… entre outros problemas q vc pode ter…

a outra parte, deve ser pq sua Unidade de Persistencia esta marcada para criar as tabelas, ai ele da esses warnings

[quote=Lavieri]se vc gerou o código de forma atuomatica saiba que faz bastante diferença sim trocar o nome…

todo o lugar onde tem mappedBy pode ser afetado apos a mudança no nome…

outra coisa é que ele cria um monte de consulta padrão… findById … findAll … findByEtc… nela existe String HQL onde a referencia é pelo nome do campo em Java

ou seja, se seu campo antes era codigo e agora é xucrutz, as queryByName vão dar erro… entre outros problemas q vc pode ter…

a outra parte, deve ser pq sua Unidade de Persistencia esta marcada para criar as tabelas, ai ele da esses warnings[/quote]
Oi Lavieri. Valeu por responder.

E tem como eu consertar isso ou é só voltando os campos para os nomes que eles tinham antes? Não tem como “zerar” o banco (sem dar o DROP e depois um CREATE)?

Abraço.

se vc so alterou no Banco De Dados, basta vc ir na Entidade, que mapea essa tabela, e trocar a anotação @Column ou @Basic … depende de como vc anotou, para o campo em questão…

Entendo.
Eu tinha colocado @Column. Aí refatorei o nome do campo de “id” para “codigo” (e coloquei o name.
Por exemplo, minha classe Time está assim:

import java.util.ArrayList;
import java.util.List;
import javax.persistence.*;

@Entity
@Table (name = "Time")
public class Time {

    @Id
    @Column (name = "codigo")
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    private int codigo;

    @Column (name = "nome")
    private String nome;

    @OneToMany (mappedBy = "time")
    private List<Jogador> listaJogadores;

    public Time() {
        listaJogadores = new ArrayList<Jogador>();
        nome = "Sem nome";
    }
//...

Mudei para “@Column (name = “id”)”, mas ainda são apresentados alguns erros. Acho que o meu problema está no @OneToMany.

Abraço.

repito, se vc mudou o nome no banco, bastava apenas trocar o que tinha escrito em @Column ou @Basic… não precisava refatorar…

a maioria das IDE não refatora o que esta no mappedBy=“aquiDentro” … e é ai onde mora o perigo…

o nome do seu campo no banco dedados pode ser qualquer coisa, mais o nome que vc escolheu pro seu modelo, pode influenciar no seu projeto

e mudar esse nome é uma tarefa de refatoração meio xata…

Entendi.

Valeu Lavieri.

Abraço.