2017-05-15 10 views
0

バージョン1.0.0.FinalのHibernate 5.2.10バージョンとhibernate-jpa-2.1-apiを持っています。私はデータベースとしてMairaDBを使用しています。 persistance.xmlでは、プロパティhibernate.ejb.naming_strategyをDefaultComponentSafeNamingStrategyとして設定しますが、同じエラーが表示されます。 エンティティのマッピングの列を繰り返します。私は@attributeoverrides hibernateを使いたくないし、別のメソッドを試したが、同じエラーが残っていた。私は2つ以上のエンベディッドエンティティを必要とします。あなたはおそらく知っているようにあなたはそれのために、Hibernateは5でDefaultComponentSafeNamingStrategyを使用することはできません2回埋め込みエンティティをHibernate

おかげ

答えて

0

は、Hibernate 4

から古いNamingStrategyインタフェースの実装である、5は二つの新しいインタフェースを使用休止状態ImplicitNamingStrategyおよびPhysicalNamingStrategy

この暗黙の名前付け方針は、org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImplです。 hibernate.implicit_naming_strategyプロパティ(ではなく、hibernate.ejb.naming_strategy)を設定する必要があります。これらのエンティティのために

@Embeddable 
public class AuthorInfo { 

    @Column 
    private String authorInfo; 

    @OneToOne 
    private Book bestBook; 

} 

@Entity 
public class Book { 

    @Id 
    private Long pid; 

    @Embedded 
    private AuthorInfo firstAuthor; 

    @Embedded 
    private AuthorInfo secondAuthor; 

} 

それは、スキーマをチェックするには、このスキーマ

create table Book (
     pid bigint not null, 
     firstAuthor_authorInfo varchar(255), 
     secondAuthor_authorInfo varchar(255), 
     firstAuthor_bestBook_pid bigint, 
     secondAuthor_bestBook_pid bigint, 
     primary key (pid) 
) 

ユニットテスト作成:私は注釈@Columnを使用して、このorg.hibernate.bootを使用TwoEmbeddedStrategyTest.java

+0

を。 model.naming.ImplicitNamingStrategyComponentPathImplは動作しませんでしたが、注釈を削除した後は機能しました。 – Elhamo

+0

@Elhamo私はPersistentContextではなく、Hibernate SessionFactoryでこれをチェックしました。理由はあるかもしれませんが、わかりません。あなたは何かを逃すことができます。 –

関連する問題