2016-03-31 4 views
1

JPAプロバイダとして休止状態のMySqlでspring-data-restを使用しようとしています。spring data rest hibernateはすべてのテーブル名を小文字で囲み、@Table( "Name")を無視します。

クエリで使用されているテーブル名をクラスの単純な名前に一致させたい。これ以上何もない。どのように達成するのですか?

すべての命名方法を試したところ、効果がないようです。また、私は

@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 

推移依存関係:

[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は適用されません。

+0

[この質問](http://stackoverflow.com/questions/28571848/spring-boot-jpa-insert-in-table-with-uppercase-name)で提供されている解決策のいずれかが機能しますか? – Chatoyancy

+0

どのHibernateバージョンを使用していますか? –

+0

@Chatoyancyはい、実際に。私は不注意に自分自身に遭遇しましたが、あなたのリンクは機能します。あなたが望むなら、答えとしてそれを提供してください。私は基本的にスタックを上に戻って、そのテーブル名にどのように来ているのか把握し、intellijからオートコンプリートを使用してそこに到達しました。私は間違った質問をしていたようで、OSに関連する回答に私を誘導していたので、早く見つけられませんでした。 –

答えて

2

SpringNamingStrategyを使用しているため、これはHibernateのImprovedNamingStrategyと同じ値を使用します(hereを確認してください)。

ImprovedNamingStrategyのリンクを確認すると、tableNameのデフォルトの動作は、大文字と小文字が混在した大文字小文字になります。

+0

ええ、私はそれを発見し、それをEJB戦略に変更しました。ありがとう! –

+0

また、戦略を拡張し、EJB戦略がニーズに合わない場合にのみ、この動作を変更することもできます。 – dambros

+0

私は同じ問題を抱えていました。 http://stackoverflow.com/questions/28571848/spring-boot-jpa-insert-in-tableで説明されているように、spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImplを使用します。 - 大文字 - 名前付き - 休止状態で - 問題を解決しました – 5im