我有一个表实体Map为:
@Entity
public class ItemsToRegister implements Serializable{
@Id
@Column(name = "ID_ITEM_TO_REGISTER")
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
.....
当我尝试在数据库中插入新记录时,表名被转换为小写形式:items_to_register,但我的表名是ITEMS_TO_REGISTER如何在不更改MySql配置的情况下修复我的问题?(my.cnf)
我的www.example.com文件中有application.properties:
spring.jpa.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy
8条答案
按热度按时间hfyxw5xn1#
在休眠5中,它将是
在应用程序.属性文件中。
hgqdbh6s2#
正如@jasonleakey所建议的,我们可以考虑使用以下命名策略。
这会告诉Hibernate生成与@Table(name=”“)或@Column(name=”“)中指定的完全相同的SQL。
但是请记住--当在实体类中使用没有@Table,@Column注解的PhysicalNamingStrategy时,Hibernate会使用类名和变量名生成SQL。
则所生成的SQL将是,
不幸的是,这不是一个好的选择,因为通常我们会将数据库中的列定义为FIRST_NAME和LAST_NAME,并将表名定义为EMPLOYEE。
所以这实际上是在下面两个选项之间的选择。
或
2eafrhcq3#
您需要用tic(`)转义表名,使其区分大小写。
vxbzzdmp4#
解决方法是添加:
至
application.properties
rkue9o1l5#
您可以实施自己的策略,并从www.example.com调用它application.properties:
下面是一个首字母大写的例子
rekjcdws6#
我在示例中使用了H2数据库。
使表名“user”带有反勾号将在数据库中为您提供小写的表名。
实体类别:
数据库中的表名:
P.S.您可以将实体命名为“User”(大写),但无论如何,它都会将您命名为“user”(小写)
来源:http://coddingbuddy.com/article/56566857/jpa-uppercase-table-names
pqwbnv8z7#
您可以尝试:
wsewodh28#
请尝试此属性: