Wir verwenden Hibernate Annotations 3.4.0GA und Hibernate Core-3.3.2.GA (auch als die aktuellen stabilen Versionen bekannt) für eine Oracle-DatenbankWert von 0 in Hibernate IndexColumn abgebildet mit Basis = 1
Wir haben ein Eins-zu-Viele-Mapping mit base = 1, das lange funktionierte, aber letzte Woche haben wir einige Einträge in der Datenbank gefunden, wo die Indexspalte einen Wert von 0 enthielt, der alle Arten von Problemen verursachte.
Also meine Frage ist: Weiß jemand eine Möglichkeit, einen Wert von 0 in die Indexspalte einer Eins-zu-viele-Beziehung zu erhalten, wenn es mit einer Basis = 1 zugeordnet ist? Möglicherweise verwandt mit der Verwendung Generics oder MappedSuperclass.
Beachten Sie, dass der Code ziemlich komplex ist, weil auch die Vererbung beteiligt ist.
Nachfolgend sind die relevanten Teile der Klassen:
// SuperClass of the One side
@MappedSuperclass
public abstract class AbstractReihung<Tp, Tw, Te extends AbstractReihungElement<Tp, Tw>>
{
@OneToMany(cascade = CascadeType.ALL)
@Cascade(
{
org.hibernate.annotations.CascadeType.ALL,
org.hibernate.annotations.CascadeType.DELETE_ORPHAN
})
@JoinColumn(name = "parent_id", nullable = false)
@IndexColumn(name = "position", base = 1, nullable = false)
private List<Te> elements = new ArrayList<Te>();
}
// Super Class of the Many side
@MappedSuperclass
public abstract class AbstractReihungElement<Tp, Tw> extends AbstractDbObject
{
@ManyToOne
@JoinColumn(name = "parent_id", insertable = false, updatable = false, nullable = false)
private Tp parent;
@Column(name = "position", insertable = false, updatable = false, nullable = false)
private int position;
}
Die tatsächlichen Klassen von diesen erben und konkreten Klassen für die Typparameter bereitzustellen. Sie sind als Entity abgebildet. Sie geben auch ID- und Versionsspalten sowie viele andere Attribute und Referenzen an, aber nichts, was mit der vorliegenden Zuordnung zu tun hat.
Hallo Jens, ich stehe vor dem gleichen Szenario, das du beschrieben hast, bis zuletzt hast du herausgefunden, wie dieses Problem passiert, oder hast du eine Lösung dafür gefunden ?, Das ist mein Code dafür, http: // Pastebin. com/V6FRBLME – fujy
Ich habe nie mehr darüber herausgefunden, als was in dieser Frage und Kommentare beschrieben wird. –