Using reserved JPQL keywords with JPA

Deadly 提交于 2019-12-18 04:53:20

问题


I have an entity class called "Group" and NetBeans warns me "The entity table name is a reserved Java Persistence QL keyword".

A similar case would be the use of reserved SQL keywords.

Will this name be escaped? Would the use of a different table name solve the problem @Table(name="otherName"). Or should I rename the class?


回答1:


Will this name be escaped?

There is nothing in the JPA spec that says so, if your provider does, this is provider specific.

Would the use of a different table name solve the problem @Table(name="otherName")

Obviously, it would (as long as you don't use another reserved keyword of course). But if you are using a JPA 2.0 provider, there is a standard way to get a db object name escaped, with double quotes:

@Table(name="\"Group\"")

In JPA 1.0, there is nothing standard, it depends on your JPA provider. For example, Hibernate uses backticks:

@Table(name="`Group`")

Or should I rename the class?

No. The table name of an entity defaults to the entity name but you can control it using the @Table annotation as we saw. There is thus no need to change the class name of your entity.




回答2:


You don't have to rename the class - and you shouldn't - the name you have chosen reflects your domain in the best way, and you should not change it because of tool or framework limitations, in case the tool/framework provides a way to avoid the "clash". JPA provides such a way.



来源:https://stackoverflow.com/questions/2153881/using-reserved-jpql-keywords-with-jpa

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!