Você precisa escapar do nome da tabela ao usar palavras-chave reservadas. No JPA 1.0, não existe uma forma padronizada e a solução específica do Hibernate é usar backticks:
@Entity
@Table(name="`User`")
public class User {
...
}
No JPA 2.0, a sintaxe padronizada é assim:
@Entity
@Table(name="\"User\"")
public class User {
...
}
Referências
- Documentação do Hibernate Core
- 5.4. Identificadores entre aspas SQL
- Especificação JPA 2.0
- 2.13 Nomenclatura de objetos de banco de dados