我正在使用Hibernate和Lombok开发一个Spring Boot应用程序.我将实体类Product映射到数据库中的PRODUCT表.以下是代码的相关部分:

@Entity
@Table(name = "product")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ProductId")
    private int id;
    // Other fields...
}

当我运行我的应用程序时,我得到以下错误:

ERROR o.h.engine.jdbc.spi.SqlExceptionHelper : Unknown column 'p1_0.product_id' in 'field list'

Hibernate似乎正在将实体类中的驼峰大小写字段名‘ProductID’转换为数据库中以下划线分隔的列名‘product_id’,从而导致不匹配.

我try 更改@Column注释以匹配数据库中的实际列名,但没有解决问题.我还判断了我的数据库模式,它确实有一个‘ProductID’列.

有没有办法更改Hibernate命名策略,使其不会自动转换字段名?我希望实体类中的名称直接映射到数据库中的列名,而无需任何修改.

推荐答案

MySQL不区分大小写.如果您使用区分大小写的列名,那么它会将驼峰大小写转换为蛇形大小写.

Java相关问答推荐

我应该避免在Android中创建类并在运行时编译它们吗?

我无法将附件发送到NetBeans之外

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

为什么我的ArrayList索引的索引总是返回-1?

Hibernate 6支持Joda DateTime吗?

在Spring Boot应用程序中导致";MediaTypeNotSupportdException&qot;的映像上载

在VS代码中,如何启用Java Main函数的&Q;Run|DEBUG&Q;代码?

由于在生成器模式中使用泛型,lambda表达式中的返回类型错误

Java泛型类方法的静态返回类型是否被类型擦除?

在Oracle JDBC连接中,连接失效和身份验证失效是什么意思?

将关闭拍卖的TimerService

如何生成指定范围内的11位序列号?

使IntelliJ在导入时优先 Select 一个类或将另一个标记为错误

如何通过Java java.lang.Foreign API访问本机字节数组

基于距离的APACHE POI公式判断

如果c不为null,Arrays.sort(T[]a,Comparator<;?super T>;c)是否会引发ClassCastException?

如何使JOOQ渐变脚本不重新创建表未更改的类?

简化每个元素本身都是 map 列表的列表

Spring Boot Security-每个端点都被403禁止,Spring记录一个BasicErrorController#错误(HttpServlet请求)

在对象列表上调用提取后,如何判断没有值为空?