Dentro da anotação @Entity temos o parâmetro (name = ""), qual a diferença desse para o @Table(Name = "")?
Dentro da anotação @Entity temos o parâmetro (name = ""), qual a diferença desse para o @Table(Name = "")?
Oi Victor,
O name da anotação @Table
se refere ao nome da tabela no banco de dados.
Já o name da anotação @Entity
se refere ao nome da entidade no Java, que deve ser utilizado em consultas jpql. Exemplo:
@Entity
public class Pessoa {
//...
}
SELECT p FROM Pessoa p;
Na querie JPQL é indicado o nome da entidade(mesmo nome da classe). Mas se por acaso você precisar renomear essa classe:
@Entity
public class PessoaFisica {
//...
}
A consulta anterior vai dar erro, pois o nome da classe mudou e você terá que alterar em todas as consultas para o novo nome da classe. Para evitar esse problema você pode colocar o name na anotação @Entity
, utilizando esse name nas consultas e não mais o nome da classe.
Bons estudos!
Entendi, ótima explicação, muito obrigado!