Usiamo Sospensione annotazioni 3.4.0GA e Sospensione nucleo 3.3.2.GA (noto anche come le versioni stabili correnti) in un database Oraclevalore 0 nella Hibernate IndexColumn mappata con base = 1
Abbiamo Mappatura uno-a-molti con base = 1 che ha funzionato bene per un tempo mooolto, ma la scorsa settimana abbiamo trovato alcune voci nel database in cui la colonna indice conteneva un valore di 0 che ha causato tutti i tipi di problemi.
Quindi la mia domanda è: qualcuno sa di un modo per ottenere un valore di 0 nella colonna indice di una relazione uno-a-molti, quando è mappato con una base = 1? Possibilmente correlato all'uso di generici o MappedSuperclass.
Si noti che il codice è piuttosto complesso, perché anche l'ereditarietà è implicata.
Di seguito sono riportati i relativi pezzi delle classi:
// 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;
}
Le classi effettivi ereditano da questi e forniscono classi concrete per i parametri di tipo. Sono mappati come entità. Inoltre, specificano colonne id e version, nonché tonnellate di altri attributi e riferimenti, ma nulla è correlato alla mappatura in questione.
Ciao Jens, sto affrontando lo stesso scenario che hai descritto, alla fine hai trovato come si verifica questo problema o hai trovato una soluzione per questo ?, Questo è il mio codice per esso, http: // pastebin. com/V6FRBLMe – fujy
Non ho mai trovato altro su di esso rispetto a quanto descritto in questa domanda e nei commenti. –