2016-04-12 5 views
0

Ich habe eine benutzerdefinierte SequenceGenerator implementiert, die ich in allen meinen Entitäten für die "ID" verwenden möchte. Aber anstatt etwas wie this für jede Einheit zu tun haben:Wie verwende ich einen benutzerdefinierten SequenceGenerator für Hibernate im Frühjahr für alle Entitäten?

@Id 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XyzIdGenerator") 
@GenericGenerator(name = "XyzIdGenerator", 
     strategy = "com.mycompany.myapp.id.BigIntegerSequenceGenerator", 
     parameters = { 
      @Parameter(name = "sequence", value = "xyz_id_sequence") 
     }) 
public BigInteger getId() 
{ 
    return id; 
} 

ist es eine Möglichkeit, diese SequenceGenerator auf alle Unternehmen standardmäßig anwenden mit Vanille-Hibernate/JPA oder vielleicht durch Verwendung von Spring?

Antwort

0

Verschieben Sie das Code-Segment einfach in eine Super-Klasse, fügen Sie add @MappedSuperclass hinzu. Aber in diesem Fall wird Ihre gesamte Entität den gleichen Seq-Generator

@MappedSuperclass 
public class SeqIdable implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XyzIdGenerator") 
    @GenericGenerator(
    name = "XyzIdGenerator", 
    strategy = "com.mycompany.myapp.id.BigIntegerSequenceGenerator", 
    parameters = { 
     @Parameter(name = "sequence", value = "xyz_id_sequence") 
    }) 
    public BigInteger getId() { 
     return id; 
    } 

} 
verwenden
Verwandte Themen