MySQL probleme beim "Generate Tables from Entities"

Maghrebi

Mitglied
Hi Leute,

anbei habe ich ein Screenshot hochgeladen. Ich sitze mittlerweile seit einer Woche daran und weiß nicht wie ich diesen Fehler beheben kann.

Wäre sehr dankbar, wenn ihr mir zumindest einen Anhaltspunkt geben könntet 😀
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    121,2 KB · Aufrufe: 40
Du machst lieber einen Screenshot und lädst den hoch, statt per einfachem Copy&Paste die Fehlermeldung in den Thread zu packen? Manche Leute haben wahrlich viel Zeit 🙂

Machsmal bitte und den dazugehörtigen Code womöglich auch, dann wird dir schneller geholfen. Ich kann auf dem Screenshot jedenfalls Nichts entziffern.
 
[OT]Buchstaben zu klein, verschwommen, es ist unsauber und unschön zu lesen. Ich hatte bereits nach dem zweiten Wort keinen Nerv mehr weiter auf den Screenshot zu schauen[/OT]
 
sorry

PHP:
Runtime Exceptions: 
---------------------------------------------------------

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)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [telefonL] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.OneToManyMapping[telefonL]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.geschaeftspartner.Geschaeftspartner --> [DatabaseTable(auftrag_1_0.geschaeftspartner)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [auftraege] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[auftraege]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.geschaeftspartner.Kunde --> [DatabaseTable(auftrag_1_0.kunde)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [auftragspositionen] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.OneToManyMapping[auftragspositionen]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.auftrag.Auftrag --> [DatabaseTable(auftrag_1_0.auftrag)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [kommtVorIn] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[kommtVorIn]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.artikel.Artikel --> [DatabaseTable(auftrag_1_0.artikel)])

Runtime Exceptions: 
---------------------------------------------------------

	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createDeployFailedPersistenceException(EntityManagerSetupImpl.java:616)
	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:596)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
	at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.perform(Main.java:85)
	at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.execute(Main.java:76)
	at org.eclipse.jpt.jpa.eclipselink.core.ddlgen.Main.main(Main.java:63)
Caused by: 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)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [telefonL] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.OneToManyMapping[telefonL]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.geschaeftspartner.Geschaeftspartner --> [DatabaseTable(auftrag_1_0.geschaeftspartner)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [auftraege] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[auftraege]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.geschaeftspartner.Kunde --> [DatabaseTable(auftrag_1_0.kunde)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [auftragspositionen] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.OneToManyMapping[auftragspositionen]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.auftrag.Auftrag --> [DatabaseTable(auftrag_1_0.auftrag)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [kommtVorIn] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[kommtVorIn]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.artikel.Artikel --> [DatabaseTable(auftrag_1_0.artikel)])

Runtime Exceptions: 
---------------------------------------------------------

	at org.eclipse.persistence.exceptions.EntityManagerSetupException.deployFailed(EntityManagerSetupException.java:229)
	... 9 more
Caused by: 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)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [telefonL] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.OneToManyMapping[telefonL]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.geschaeftspartner.Geschaeftspartner --> [DatabaseTable(auftrag_1_0.geschaeftspartner)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [auftraege] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[auftraege]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.geschaeftspartner.Kunde --> [DatabaseTable(auftrag_1_0.kunde)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [auftragspositionen] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.OneToManyMapping[auftragspositionen]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.auftrag.Auftrag --> [DatabaseTable(auftrag_1_0.auftrag)])

Exception [EclipseLink-1] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The attribute [kommtVorIn] is not declared as type ValueHolderInterface, but its mapping uses indirection.
Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[kommtVorIn]
Descriptor: RelationalDescriptor(auftragsverwaltung.i.artikel.Artikel --> [DatabaseTable(auftrag_1_0.artikel)])

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
 
Öhm, im Screenshot ist jetzt eine @ManyToOne zu sehen mit ner anderen Fehlermeldung?!

Poste doch mal bitte

1. die betroffenen Klassen
2. die Compilefehler

Dass es zur Laufzeit kracht ist ja klar, der Compiler meckert ja schon..
 
Die Fehler sind in den Klassen alle gleich, deswegen werde ich nur eine Fehlermeldung posten.

Klasse Lieferant:

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( );
		}
	}
}

Klasse Handelsware -> hatgeliefert

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( );
	}
}
	
}


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
 
Zuletzt bearbeitet:

Zurück
Oben