hallo zusammen,
ich versuche verzweifelt mit JPA eine unidirektionale OneToMeny Beziehung zu realiseren. Beim Auslesen aus der DB funktioniert alles. So bald ich aber ein File-Objekt erzeuge und persistiere kracht es mit folgender Fehlermeldung:
Offentsichtlich wird die Spalte family, bei der es sich um den Foreign Key zur Tabelle directory handelt, nicht gefüllt. Warum?
Datenbank:
Tabelle: Family
Spalte 1: ID (PK)
Spalte 2: NAME
Tabelle: Person
Spalte 1: ID (pk)
Spalte 2: FAMILY (fk)
Spalte 3: NAME
In jeder Tabelle ist jeweils ein Eintrag vorhanden. Der FK des Eintrags aus der Tabelle Person referenziert auf den PK der Tabelle Family.
siehe Referenzbeispiel:
http://stackoverflow.com/questions/3...ntity-bean-jpa
Was habe ich falsch gemacht? Danke.
ich versuche verzweifelt mit JPA eine unidirektionale OneToMeny Beziehung zu realiseren. Beim Auslesen aus der DB funktioniert alles. So bald ich aber ein File-Objekt erzeuge und persistiere kracht es mit folgender Fehlermeldung:
Exception in thread "main" javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseExcepti on
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: Die Spalte 'family' akzeptiert keinen Nullwert.
Error Code: -1
Call: INSERT INTO FILE (NAME) VALUES (?)
bind => [1 parameters bound]
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: Die Spalte 'family' akzeptiert keinen Nullwert.
Error Code: -1
Call: INSERT INTO FILE (NAME) VALUES (?)
bind => [1 parameters bound]
Code:
@Entity public class Family { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String name; @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name="FAMILY", referencedColumnName="ID") private Collection<Person> person; ... } @Entity public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String name; ... } public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("DBPrototypPU"); EntityManager em = emf.createEntityManager(); // 1.Vorgang: funktioniert Family f = (Family) em.find(Family.class, 1); System.out.println(f.getName()); // Name der Familie System.out.println(f.getPerson().size()); // Anzahl Personen // 2.Vorgang: das erstellen und persistieren einer neuen Person aber nicht em.getTransaction().begin(); f = (Family) em.find(Family.class, 1); Person p = new Person(); p.setName("Mustermann"); f.getPerson().add(p); em.persist(f); em.getTransaction().commit(); }
Datenbank:
Tabelle: Family
Spalte 1: ID (PK)
Spalte 2: NAME
Tabelle: Person
Spalte 1: ID (pk)
Spalte 2: FAMILY (fk)
Spalte 3: NAME
In jeder Tabelle ist jeweils ein Eintrag vorhanden. Der FK des Eintrags aus der Tabelle Person referenziert auf den PK der Tabelle Family.
siehe Referenzbeispiel:
http://stackoverflow.com/questions/3...ntity-bean-jpa
Was habe ich falsch gemacht? Danke.
Comment