Usando palavras -chave JPQL reservadas com JPA
Pergunta
Eu tenho uma classe de entidade chamada "Grupo" e o NetBeans me avisa "O nome da tabela de entidades é uma palavra -chave Java Persistence Java".
Um caso semelhante seria o uso de palavras -chave SQL reservadas.
Esse nome será escapar? O uso de um nome de tabela diferente resolveria o problema @Table (name = "OtherName"). Ou devo renomear a classe?
Solução
Esse nome será escapar?
Há nada Na especificação JPA que diz isso, se o seu provedor o fizer, isso é específico do provedor.
O uso de um nome de tabela diferente resolveria o problema @Table (name = "OtherName")
Obviamente, seria (desde que você não usasse outra palavra -chave reservada, é claro). Mas se você estiver usando um provedor JPA 2.0, existe uma maneira padrão de escapar de um nome de objeto DB, com cotações duplas:
@Table(name="\"Group\"")
No JPA 1.0, não há nada de padrão, depende do seu provedor JPA. Por exemplo, o Hibernate usa backsticks:
@Table(name="`Group`")
Ou devo renomear a classe?
Não. O nome da tabela de uma entidade padrão no nome da entidade, mas você pode controlá -lo usando o @Table
anotação como vimos. Portanto, não há necessidade de alterar o nome da classe da sua entidade.
Outras dicas
Você não precisa renomear a classe - e não deve - o nome que escolheu reflete seu domínio da melhor maneira, e você não deve alterá -lo devido a limitações de ferramentas ou estrutura, caso a ferramenta/estrutura forneça um maneira de evitar o "Clash". O JPA fornece dessa maneira.