我创建了一个具有所有驼峰案例名称的实体,如下所示:
@Entity(name = "myRecord")
@Table(name = "myRecord")
public class MyDO {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column( updatable = false, nullable = false, unique = true)
private Long myId;
@Column(updatable = false, nullable = false)
private Long anotherId;
}
但是,由Hibernate生成并执行的sql会自动将所有驼峰大小写转换为蛇形大小写。因此,上述实体的输出sql是这样的:
create table my_record (
my_id bigint not null,
another_id bigint not null,
primary key (my_id)
) engine=InnoDB
我不希望这种自动名称转换发生。我阅读的所有博客都提到在Hibernate 5中,默认物理名称映射与逻辑名称映射相同,默认情况下与字段名称相同。
那我为什么要为我的表和列使用蛇形转换名称?
我正在使用Java 8,Hibernate 5+和Mysql 5.7 +。
任何帮助都是绝对好的。
编辑:
我通过飞行路线创建了相同的表(带有骆驼箱),并将spring.jpa.hibernate.ddl-auto = validate
设置为先前的update
。
但是,现在我得到Schema-validation: missing column [my_id] in table [my_record]
简而言之,为什么默认情况下Hibernate将驼峰大小写转换为蛇形大小写,而将命名策略的所有设置都设置为默认。
我还需要提到我正在使用Springboot 5 +。