Hibernate Reads Nulls in OneToMany

moessi91

Bekanntes Mitglied
Hallo, ich stehe hier vor einem sehr ungewöhnlichem Problem.
Mein Programm ist eigentlich gut gelaufen bis jetzt, aber auf einmal werden bei einem load meiner hibernateobjekte nulls in meine listen geladen.
Ich zeige das mal auf:
Hier meine Klasse Persis, welche die ganzen Lade und Speichervorgänge übernehmen soll.
Java:
public void load(Session session, long ID) throws HibernateException{
        Transaction tx = session.beginTransaction();
        try{
            session.load(this, ID);
            session.flush();
            tx.commit();
            session.clear();
        }catch(HibernateException ex){
            ex.printStackTrace();
            tx.rollback();
            session.clear();
            throw new HibernateException(ex);
        }
        
    }
    public void saveOrUpdate(Session session) throws HibernateException{
        Transaction tx = session.beginTransaction();
        try{
            session.saveOrUpdate(this);
            session.flush();
            tx.commit();
            session.clear();
        }catch(HibernateException ex){
            ex.printStackTrace();
            tx.rollback();
            session.clear();
            throw new HibernateException(ex);
        }
    }
    public void delete(Session session) throws HibernateException{
        Transaction tx = session.beginTransaction();
        try{
            
            session.delete(this);
            session.flush();
            tx.commit();
            session.clear();
        }catch(HibernateException ex){
            ex.printStackTrace();
            tx.rollback();
            session.clear();
            throw new HibernateException(ex);
        }
    }
    public void merge(Session session) throws HibernateException{
        Transaction tx = session.beginTransaction();
        try{
            session.merge(this);
            session.flush();
            tx.commit();
            session.clear();
        }catch(HibernateException ex){
            ex.printStackTrace();
            tx.rollback();
            session.clear();
            throw new HibernateException(ex);
        }
    }
Hier meine Klasse Artikel:
Java:
@Entity
@Table(name = "artikel")
@Inheritance(strategy=InheritanceType.JOINED)
public class Artikel extends Persis implements Serializable {
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "artikel_seq")
    @SequenceGenerator(name = "artikel_seq", sequenceName = "artikel_seq", initialValue = 1000, allocationSize = 1)
    @Column(name="pk_artikel")
    private long ID;
    
    @Column(name="bezeichnung", length = 80) 
    private String bezeichnung;
    
    @Column(name="einkaufspreis")
    private double lfEinkaufspreis;
    
    @Column(name="verkaufspreis")
    private double lfVerkaufspreis;
    
    @Column(name="abwertung")
    private double lfAbwertung;
    
    @JoinColumn(name="fk_marke", referencedColumnName="pk_marke")
    @OneToOne
    private Marke obMarke;
    
    @Column(name="einkaufsdatum")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date einkaufsdatum;
    
    @Column(name="stueckzahl")
    private int intStueckZahl;
    
    @Column(name="vkpberechnung")
    private String vkpBerechnen;
    
    @Column(name="artikelnummer", length = 25)
    private String artikelnummer;

    @ManyToOne
    Kunde obKunde;
und hier die Klasse Schmuckstück:
Java:
@Entity
@Table(name="schmuckstueck")
@PrimaryKeyJoinColumn(name="pk_schmuckstueck", referencedColumnName="pk_artikel")
public class Schmuckstueck extends Artikel{
    
    @OneToMany(mappedBy="schmuckstueck", targetEntity=Edelmetall.class, orphanRemoval=true, cascade= CascadeType.ALL)
    @LazyCollection(LazyCollectionOption.FALSE)
    @OrderColumn(name="pk_edelmetall")
    private List<Edelmetall> alEdelmetall;
    
    @OneToMany(mappedBy="schmuckstueck", targetEntity=Edelstein.class, orphanRemoval=true, cascade= CascadeType.ALL)
    @OrderColumn(name="pk_edelstein")
    @LazyCollection(LazyCollectionOption.FALSE)
    private List<Edelstein> alEdelsteine;
    
    @Column(name="art")
    private String art;
Ich hoffe ich habe alle wichtigen Daten gepostet sonst bitte melden. Ich habe das Problem, dass wenn ich die jetzt ein Schmuckstück Lade mit
Java:
Session ses = HibernateUtil.getInstance().getCurrentSession();
        selectedArtikel.load(ses, selectedArtikel.getID());
Dann lädt hibernate in die Listen alEdelsteine oder alEdelmetall in die ersten einträge Nulls hinein und ich habe echt keinen schimmer warum. Es werden immer n-1 null in die Listen geladen. Also wenn ich 4 wirklich angelegt habe sind 3 null drinnen.
Ich hoffe mir kann hier wer helfen.

Lg Vincenz
 

Ähnliche Java Themen

Neue Themen


Oben