java - spring data Rest Hibernate 将所有表名小写并忽略 @Table ("Name")

标签 java hibernate jpa spring-data-jpa spring-data-rest

我正在尝试将 spring-data-rest 与 MySql 结合使用,并使用 hibernate 作为 JPA 提供程序。

我希望查询中使用的表名与类的简单名称相匹配;而已。我如何实现这一目标?

我已经尝试了所有的命名策略,但似乎没有效果。另外,我还添加了

@Table("Foo")

并且它也会变成小写

这是错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表“TEST.worker”不存在

这是实体:

@Entity
public class Worker {
    private Long id;
    private String givenName;
    private String familyName;
    private LocalDate dob;
    private String nationalId;
    private byte[] photo;

    public Worker() {
        this.id = Math.abs(new Random().nextLong());
    }

    @Id
    @Column(name = "ID")
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Basic
    @Column(name = "GivenName")
    public String getGivenName() {
        return givenName;
    }

    public void setGivenName(String givenName) {
        this.givenName = givenName;
    }

    @Basic
    @Column(name = "FamilyName")
    public String getFamilyName() {
        return familyName;
    }

    public void setFamilyName(String familyName) {
        this.familyName = familyName;
    }

    @Basic
    @Column(name = "DOB")
    public LocalDate getDob() {
        return dob;
    }

    public void setDob(LocalDate dob) {
        this.dob = dob;
    }

    @Basic
    @Column(name = "NationalID")
    public String getNationalId() {
        return nationalId;
    }

    public void setNationalId(String nationalId) {
        this.nationalId = nationalId;
    }

    @Basic
    @Column(name = "photo")
    public byte[] getPhoto() {
        return photo;
    }

    public void setPhoto(byte[] photo) {
        this.photo = photo;
    }
}

我的相关配置:

spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.show-sql=true
spring.jpa.generate-ddl = false
spring.jpa.hibernate.ddl-auto = none
spring.jpa.hibernate.naming-strategy=org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy

来自 Spring 数据的传递依赖:

[INFO] |  +- org.hibernate:hibernate-entitymanager:jar:4.3.11.Final:compile
[INFO] |  |  +- org.hibernate:hibernate-core:jar:4.3.11.Final:compile
[INFO] |  |  +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.5.Final:compile
[INFO] |  |  \- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile

This link不适用;

最佳答案

由于您使用的是 SpringNamingStrategy,因此它使用与 ImprovedNamingStrategy 相同的值。来自 Hibernate(验证它 here )。

如果您检查 ImprovedNamingStrategy 的链接,您将看到 tableName 的默认行为是小写所有混合大小写名称,这似乎是您的情况。

关于java - spring data Rest Hibernate 将所有表名小写并忽略 @Table ("Name"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36321929/

相关文章:

java - 设计模式 : Factory vs Factory method vs Abstract Factory

java - 在浏览器中打开时,S3 对象 url 不安全(ssl)

java - 我如何将结果写入文件

java - 从数据库流式传输数据集

Hibernate 非法尝试取消引用集合

java - JPA 中的相同对象

java - 使用容器在 Java Swing 中重新绘制

java - 无法保存 OneToOne 关系

java - 使用 Hibernate 将嵌套的 JSON 数据保存到 MySQL 数据库中

java - JPA:如何使用 OneToMany 注释将新项目添加到列表中