Mam hierarchię klas:Co jest właściwe odwzorowanie JPA dla @Id w rodzica i unikalnej sekwencji w klasach bazowych
abstract DomainObject {
...
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
@SequenceGenerator(name="SEQ",sequenceName="SEQ_DB_NAME")
@Column(name = "id", updatable = false, nullable = false)
private Long id;
...
}
BaseClass extends DomainObject {
...
// Fill in blank here where this class's @Id will use a unique sequence generator
// bonus points for any sort of automatic assignment of generator names that might
//prevent me from having to instrument all my domain objects uniquely
...
}
Uwagi:
- Nie trzeba specjalnie generator klasy bazowej , więc jeśli to mnie zobowiązuje, aby go usunąć, nie ma problemu.
- To db Oracle 9i jeśli to ma zastosowanie
- Hibernate 3.4 JPA
- Wiosna 2.5 jest dostępny również
Dzięki
Wierzę, że to działałoby tylko dla twojego pierwszego rozszerzenia DomainObject w tej samej jednostce trwałości. Na następnym, gdzie musisz ustawić nazwę SequenceGenerator na "SEQ", to nie. Przynajmniej to, co robiłem za pomocą EclipseLink JPA provider, i zgodnie z javadoc http://download.oracle.com/javaee/5/api/javax/persistence/SequenceGenerator.html nazwa musi być unikalna. – digitaljoel
dla każdego, kto ogląda ten wątek ... ten komentarz dotyczy OpenJPA 2.2. Nie można przeciążać nazwy SequenceGenerator. – DAJ