Auf Thema antworten

Die Fehler sind in den Klassen alle gleich, deswegen werde ich nur eine Fehlermeldung posten.


Klasse Lieferant:


[code=Java]package auftragsverwaltung.i.geschaeftspartner;

import auftragsverwaltung.i.Fehlermeldung;

import auftragsverwaltung.i.auftrag.*;

import auftragsverwaltung.i.artikel.*;


import javax.persistence.*;


import java.util.*;


/**

 * <P>Anwendungsklasse:

 * <BR>Lieferanten verwalten.

 *

 * @author 

 *

 */


@Entity

@Table (schema = "auftrag_1_0", name = "lieferant" )

public class Lieferant {

   

    /*

     * @Id als Primärschlüssel

     */

    @Id @GeneratedValue (strategy = GenerationType.IDENTITY)

    @Column (nullable = false, unique = true, name = "LIEFERANT_ID" )

    private int id;   

   

    /**

     * @super Geschaeftspartner

     */

    @OneToOne (cascade = { CascadeType.ALL },fetch = FetchType.EAGER )

    @JoinColumn (nullable = false)

    private Geschaeftspartner gp;

   

    /**

     * <P>Lieferant verweist auf einen Bankkonto

     */

    @OneToOne (mappedBy = "lieferant", cascade = { CascadeType.ALL },fetch = FetchType.EAGER )

    private Bankkonto bankverbindung;

   

    /**

     * <P< Lieferant verweist auf mehrere Handelswaren

     */

    @OneToMany (mappedBy = "lieferant", cascade = { CascadeType.ALL },fetch = FetchType.LAZY)

    private ArrayList<Handelsware> hatGeliefert;


    /**

     * @return id

     */

    public int getId() {

        return id;

    }


    /**

     * @param set id

     */

    public void setId(int id) {

        this.id = id;

    }


    public Lieferant (){

        this.id = id;

    }

   

    /**

    * Kopierkonstruktor

    */

    public Lieferant( Lieferant lieferant )

    {

        this.id = lieferant.id;

    }


    public Bankkonto getBankverbindung() {

        return bankverbindung;

    }


    public void setBankverbindung(Bankkonto bankverbindung) {

        this.bankverbindung = bankverbindung;

    }

   

    public ArrayList<Handelsware> getHatGeliefert() {

        if(hatGeliefert == null)

        {

            hatGeliefert = new ArrayList<Handelsware>();

        }

        return hatGeliefert;

    }


    public void setTelefon(ArrayList<Handelsware> hatGeliefert) {

        this.hatGeliefert = hatGeliefert;

    }

   

    public void verweiskopien( Lieferant lieferant ){

       

        copyBankkonto( lieferant.bankverbindung );

        copyHandelsware( lieferant.hatGeliefert );

    }

   

    public void copyHandelsware( ArrayList<Handelsware> hatGeliefert ){

       

        if ( this.hatGeliefert == null ){

            this.hatGeliefert = new ArrayList<Handelsware>( hatGeliefert) ;

            this.hatGeliefert.setLieferant( this );

            this.hatGeliefert.verweiskopien( hatGeliefert );

        }

    }

   

    public void copyBankkonto( Bankkonto bankkonto ){

       

        if ( this.bankverbindung == null ){

            this.bankverbindung = new Bankkonto ();

            this.bankverbindung.setLieferant( this );

            this.bankverbindung.verweiskopien( bankkonto );

        }

    }

   

    /*

     * Handelsware/Bankkonto voreingestellter verweise

     */

    public void voreingestellteVerweise(){

        defaultHandelsware();

        defaultBankkonto();

    }

   

    public void defaultHandelsware(){

        hatGeliefert = new ArrayList<Handelsware>();

    }

   

    public void defaultBankkonto(){

        if(bankverbindung != null){

            bankverbindung = new Bankkonto();

            bankverbindung.voreingestellteVerweise();

        }

    }


    public Geschaeftspartner getGeschaeftspartner() {

        return gp;

    }


    public void setGeschaeftspartner(Geschaeftspartner geschaeftspartner) {

        this.gp = geschaeftspartner;

    }

   

    public void set_GeschaeftspartnerLieferant (Geschaeftspartner geschaeftspartner)

    {

        this.gp=geschaeftspartner;

        geschaeftspartner.setIstLieferant(true);

        geschaeftspartner.setLieferant(this);

    }

   

    public void setBankkonto(Bankkonto bankkonto) {

        this.bankverbindung = bankkonto;

    }

   

    public void validateBankverbindung( ArrayList< Fehlermeldung > fehlermeldungen )

    {

        if ( bankverbindung == null )

        {

            Fehlermeldung fehlermeldung = new Fehlermeldung(

            "Bankverbindung", "kein Wert angegeben", "Wert muss eingegeben werden" );

            fehlermeldungen.add( fehlermeldung );

        }

    }

   

    public void identifikatorNullSetzen( ){

        id = 0;

        if ( gp != null )

            gp.identifikatorNullSetzen( );

    }

   

    public void koppeln( ){

        if ( gp != null ){

            gp.setLieferant(this);

            gp.koppeln( );

        }

    }

   

   

   

    public void loeschen( ArrayList< Fehlermeldung > fehlermeldungen ){

       

        EntityManagerFactory emFabrik = Persistence.createEntityManagerFactory( "Auftrag_1_0" );

        EntityManager em = emFabrik.createEntityManager( );

       

       

        if ( fehlermeldungen.isEmpty( ) ){

       

            if ( gp != null )

                gp.geschaeftspartnerVorhanden( fehlermeldungen );

            if ( fehlermeldungen.isEmpty( ) ){

                em.setFlushMode( FlushModeType.COMMIT );

                try{

                    EntityTransaction etxn = em.getTransaction( );

                    etxn.begin( );

                    em.remove( em.merge( this ) );

                    etxn.commit( );

                }

                catch ( Exception ex ){

                    Fehlermeldung fehlermeldung = new Fehlermeldung("Lieferantendaten löschen","Fehler beim Zugriff auf die Datenbank", "" );

                    fehlermeldungen.add( fehlermeldung );

                }

                finally{

                    em.close( );

                }

            }

        }

    }

   

    public static List< Lieferant > suchen(ArrayList< Fehlermeldung > fehlermeldungen ){

       

        EntityManagerFactory emFabrik = Persistence.createEntityManagerFactory( "Auftrag_1_0" );

        EntityManager em = emFabrik.createEntityManager( );

        try{

           

            Query q = em.createQuery( "SELECT k FROM Lieferant k" );

            List< Lieferant > lieferantL = ( List< Lieferant > ) q.getResultList( );

            return lieferantL;

        }

        catch ( Exception ex ){

           

            Fehlermeldung fehlermeldung = new Fehlermeldung("Kundendaten suchen",

                                                            "Fehler beim Zugriff auf die Datenbank", "" );

            fehlermeldungen.add( fehlermeldung );

            return null;

        }

        finally{

            em.close( );

        }

    }

}

[/code]


Klasse Handelsware -> hatgeliefert


[code=Java]package auftragsverwaltung.i.artikel;

import auftragsverwaltung.i.*;

import auftragsverwaltung.i.geschaeftspartner.Lieferant;


import javax.persistence.*;


import java.util.*;


/**

 * <P>Anwendungsklasse:

 * <BR>Handelsware verwalten.

 *

 * @author

 *

 */

@Entity

@Table ( schema = "auftrag_1_0", name = "handelsware"  )

public class Handelsware {

   

    /*

     * @Id als Primärschlüssel

     */

    @Id @GeneratedValue (strategy = GenerationType.IDENTITY)

    @Column (nullable = false, unique = true, name = "HANDELSWARE_ID" )

    private int id;   

   

    /**

     * @super Artikel

     */

    @OneToOne ( cascade = { CascadeType.ALL },fetch = FetchType.EAGER )

    @JoinColumn ( nullable = false)

    private Artikel artikel;

   

    /**

     * <P>Handelsware verweist auf einen Lieferanten

     */

    @ManyToOne( cascade = { CascadeType.ALL },fetch = FetchType.EAGER )

    private Lieferant lieferant;

   

    /*

     * Einkaufspreis pro Einheit verwalten.

     */

    @Column (nullable = false, unique = true, name = "EINKAUFSPREISPROEINHEIT" )

    private Double einkaufspreisProEinheit;



    /**

     * @return  id

     */

    public int getId() {

        return id;

    }


    /**

     * @param set id

     */

    public void setId(int id) {

        this.id = id;

    }


    /**

     * @param einkaufspreisProEinheit Einkaufspreis pro Einheit

     */

   

    public Handelsware() {

       

        einkaufspreisProEinheit();

    }

   

    public void einkaufspreisProEinheit( ){

        einkaufspreisProEinheit = 0.0;

    }

   

    /**

    * Kopierkonstruktor

    */

    public Handelsware( Handelsware handelsware ){

        this.id = handelsware.id;

        this.einkaufspreisProEinheit = handelsware.einkaufspreisProEinheit;

    }

   

    public void verweiskopien( Handelsware handelsware ){

   

        copyArtikel( handelsware.artikel );

        copyLieferant( handelsware.lieferant );

    }


    /**

     * @return auswertende Einkaufspreis pro Einheit

     */

    public Double getEinkaufspreisProEinheit() {

        return einkaufspreisProEinheit;

    }


    /**

     * @param zuweisende Einkaufspreis pro Einheit

     */

    public void setEinkaufspreisProEinheit(Double einkaufspreisProEinheit) {

        this.einkaufspreisProEinheit = einkaufspreisProEinheit;

    }

   

    public Lieferant getLieferant()

    {

        return lieferant;

    }

   

    public void setLieferant(Lieferant lieferant){

       

        this.lieferant = lieferant;

    }

   

    /*

     * Lieferant/Artikel voreingestellter Verweis

     */

    public void voreingestellteVerweise()

    {

        defaultLieferant();

        defaultArtikel();

    }

       

    public void defaultLieferant()

    {

        if(lieferant == null){

            lieferant = new Lieferant();

            lieferant.voreingestellteVerweise();

        }

    }

   

    public Artikel getArtikel() {

        return artikel;

    }


    public void setArtikel(Artikel artikel) {

        this.artikel = artikel;

    }

   

    public void defaultArtikel()

    {

        if(artikel==null){

            artikel= new Artikel();

            artikel.setHandelsware( this );

            artikel.voreingestellteVerweise();

        }

    }

   

    public void copyArtikel( Artikel artikel ){

   

        if ( this.artikel == null ) {

   

            this.artikel = new Artikel( artikel );

            this.artikel.setHandelsware( this );

            this.artikel.verweiskopien( artikel );

        }

    }

   

    public void copyLieferant( Lieferant lieferant ){

       

        if ( this.lieferant == null ) {

   

            this.lieferant = new Lieferant( lieferant );

            this.lieferant.verweiskopien( lieferant );

        }

    }

   


   

    /*

     * Ausnahme und Fehlermeldung Lieferant

     */

   

    public void validateAuftragsLieferant( ArrayList< Fehlermeldung > fehlermeldungen )

    {

        if ( lieferant == null )

        {

            Fehlermeldung fehlermeldung = new Fehlermeldung(

            "Lieferant", "kein Wert angegeben", "Wert muss eingegeben werden" );

            fehlermeldungen.add( fehlermeldung );

        }

    }

   

    public void validateLieferant( ArrayList< Fehlermeldung > fehlermeldungen ){

   

        if ( lieferant == null ){

   

            Fehlermeldung fehlermeldung = new Fehlermeldung("Lieferant", "nicht ausgewählt",

                                            "Einen Lieferanten aus dem Datenbestand auswählen" );

            fehlermeldungen.add( fehlermeldung );

        }

    }

   

    public void validateEinkaufspreisProEinheit( ArrayList< Fehlermeldung > fehlermeldungen ){

       

        if ( einkaufspreisProEinheit == null ){

   

            Fehlermeldung fehlermeldung = new Fehlermeldung("Einkaufspreis pro Einheit", "nicht ausgewählt",

                                            "Einen Einkaufspreis aus dem Datenbestand auswählen" );

            fehlermeldungen.add( fehlermeldung );

        }

    }

   

    public void loeschen( ArrayList< Fehlermeldung > fehlermeldungen ){

       

        EntityManagerFactory emFabrik = Persistence.createEntityManagerFactory( "Auftrag_1_0" );

        EntityManager em = emFabrik.createEntityManager( );

        kommtInKundenVor( fehlermeldungen );

   

        if ( fehlermeldungen.isEmpty( ) ){

   

            em.setFlushMode( FlushModeType.COMMIT );

            try{

   

                EntityTransaction etxn = em.getTransaction( );

                etxn.begin( );

                em.remove( em.merge( this ) );

                etxn.commit( );

            }

            catch ( Exception ex ){

                Fehlermeldung fehlermeldung = new Fehlermeldung("Handelswaredaten löschen",

                                                                "Fehler beim Zugriff auf die Datenbank", "" );

                fehlermeldungen.add( fehlermeldung );

            }

            finally{

                em.close( );

            }

        }

    }

   

public void kommtInKundenVor(ArrayList< Fehlermeldung > fehlermeldungen ){

       

        EntityManagerFactory emFabrik = Persistence.createEntityManagerFactory( "Auftrag_1_0" );

        EntityManager em = emFabrik.createEntityManager( );

           

        try{

           

            Query query = em.createQuery("SELECT auftrag FROM Kunde AS kunde, " +

                    "IN( kunde.auftraege ) auftrag " + "WHERE kunde.id = :idParam" );

            query.setParameter( "idParam", id );

           

            if ( query.getResultList( ).size( ) > 0 ){

                Fehlermeldung fehlermeldung = new Fehlermeldung( "Handelsware löschen",

                                                "Handelware kommt noch in mindestens einem Kunden vor", "" );

                fehlermeldungen.add( fehlermeldung );

            }

        }

        catch ( Exception ex ){

            Fehlermeldung fehlermeldung = new Fehlermeldung(

            "Handelsware löschen: Prüfung, ob Kunde noch in Aufträgen vorkommt",

            "Fehler beim Zugriff auf die Datenbank", "" );

            fehlermeldungen.add( fehlermeldung );

        }

    }


    public void istHandelswareVonLieferant(ArrayList< Fehlermeldung > fehlermeldungen ){

   

    EntityManagerFactory emFabrik = Persistence.createEntityManagerFactory( "Auftrag_1_0" );

    EntityManager em = emFabrik.createEntityManager( );

   

    try{

        Query query = em.createQuery("SELECT handelsware FROM Handelsware handelsware WHERE handelsware.id = " +

                                                                                                        ":idParam" );

        query.setParameter( "idParam", id );

       

        if ( query.getResultList( ).size( ) == 0 ){

       

            Fehlermeldung fehlermeldung = new Fehlermeldung("Handelsware: Prüfung, ob Handelsware vorhanden",

                                                                        "Handelsware nicht vorhanden",

                                                                            "Handelsware aus dem Bestand auswählen" );

            fehlermeldungen.add( fehlermeldung );

        }

    }

    catch ( Exception ex ){

       

        Fehlermeldung fehlermeldung = new Fehlermeldung(

        "Hndelsware: Prüfung, ob Handelsware vorhanden",

        "Fehler beim Zugriff auf die Datenbank", "" );

        fehlermeldungen.add( fehlermeldung );

    }

    finally{

        em.close( );

    }

}

   

}

[/code]



[PHP]Exception in thread "main" javax.persistence.PersistenceException: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.EntityManagerSetupException

Exception Description: Deployment of PersistenceUnit [Auftrag_1_0] failed. Close all factories for this PersistenceUnit.

Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.IntegrityException

Descriptor Exceptions:

---------------------------------------------------------


Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException

Exception Description: The attribute [hatGeliefert] is not declared as type ValueHolderInterface, but its mapping uses indirection.

Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[hatGeliefert]

Descriptor: RelationalDescriptor(auftragsverwaltung.i.geschaeftspartner.Lieferant --> [DatabaseTable(auftrag_1_0.lieferant)])

Runtime Exceptions:

---------------------------------------------------------


    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:638)

    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:574)

    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:533)

    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:777)

    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:722)

    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:215)

    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:542)

    ... 7 more[/PHP]



Oben