2017-05-15 3 views
0

Ich habe Hibernate Version 5.2.10 und Hibernate-jpa-2.1-API mit Version 1.0.0.Final. Ich benutze MairaDB als Datenbank. Legen Sie in persistance.xml die Eigenschaft hibernate.ejb.naming_strategy als DefaultComponentSafeNamingStrategy fest, aber ich erhalte immer noch den gleichen Fehler: Wiederholte Spalte im Mapping für Entität. Ich möchte nicht @attributeoverrides Hibernate verwenden und ich versuchte verschiedene Methoden, aber immer noch den gleichen Fehler. Ich möchte zwei oder mehr Embedded Enities.Hibernate zweimal eingebetteten Einheiten

Dank

Antwort

0

Sie nicht DefaultComponentSafeNamingStrategy mit Hibernate 5, weil es eine Implementierung der alte ist NamingStrategy Schnittstelle von Hibernate 4.

Wie Sie wahrscheinlich wissen, Hibernate 5 verwendet zwei neue Schnittstellen verwenden können ImplicitNamingStrategy und PhysicalNamingStrategy.

Sie können diese implizite Benennungsstrategie verwenden: org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl. Sie müssen hibernate.implicit_naming_strategy Eigenschaft (nichthibernate.ejb.naming_strategy) festlegen.

Für diese Einheiten

@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; 

} 

es schafft dieses Schema

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) 
) 

Unit-Test, ein Schema zu überprüfen: TwoEmbeddedStrategyTest.java

+0

I Anmerkung @column verwendet und verwendet, um dieses org.hibernate.boot. model.naming.ImplicitNamingStrategyComponentPathImpl und funktionierte nicht, aber nach dem Entfernen von Anmerkungen funktionierte es. – Elhamo

+0

@Elhamo Ich habe dies mit Hibernate SessionFactory überprüft, nicht mit PersistentContext. Es kann ein Grund sein, aber ich bin mir nicht sicher. Du könntest etwas verpassen. –

Verwandte Themen