Datensatz wird nicht in DB geschrieben!

bluer

Aktives Mitglied
Hi,

ich habe folgendes Problem. Der Anwender legt über eine Maske ein neues Projekt an und wenn er damit fertig ist wird folgendes aufgerufen:
Java:
   @Transactional
   public void finalWizard(){
        this.addProject();
        this.consultant.getUser().addProject(this.project);
        this.customer.getUser().addProject(this.project);
        this.userDao.update(this.consultant.getUser());
        this.userDao.update(this.customer.getUser());
        this.reset();
    }
wobei addProject wie folgt aussieht:
Java:
    @Transactional
    public void addProject(){
        this.projectDao.persist(this.project);
    }
und persist() so:
Java:
    @PersistenceContext(type = PersistenceContextType.EXTENDED)
    private EntityManager em;
...
    public void persist(Project project) {
        em.persist(project);
	em.flush();
    }
...

Project und User sind über eine @ManyToMany Annotation wie folgt verknüpft:
Java:
@Entity
public class User {
...
        @ManyToMany
        @JoinTable( name = "User_Project",
                    joinColumns = {@JoinColumn( name="user_id")},
                    inverseJoinColumns = {@JoinColumn (name = "project_id")})
        public List<Project> getProjects() {return this.projects; }
...
}

@Entity
public class Project {
...
        @ManyToMany( mappedBy = "projects")
        public List<User> getUsers() { return this.users; }
...
}
Wenn ich jedoch die Projekte der beiden User über den DB-Operator update aktualiesieren möchte, wird die Fehlermeldung geworfen, dass das eben hinzugefügte Projekt nicht in der DB existiert und schreibt es tatsächlich nicht hinein ???:L
Hat jmd eine Ahnung woran das liegen könnte???

Vielen Dank schonmal!!!
 
Du nutzt einen extended PersitenceContext (also hast du wohl eine Stateful SessionBean), wo wird der geschlossen?
 
Habe das Problem jetzt gelöst in dem ich bei der @ManyToMany Annotation
Java:
    @ManyToMany( cascade= (CascadeType.ALL))
hinzugefügt habe.

Ich habe den Grundstock des Codes von einem Kollegen übernommen und hatte vorher keinerlei Erfahrung mit DB+Java. Was bedeutet es eigentlich, wenn ich ein extended PersitenceContext benutze? Und ja ich verwende hauptsächlich session scopes!
 

Zurück
Oben