2016-06-10 48 views
0

Ich versuche, Objekt aus der Entität zu entfernen, indem Sie "Löschen" aus dem Repository verwenden, aber etwas funktioniert nicht.Spring Hibernate Objekt löschen

@Entity 
public class Director implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE) 
    private Long id; 

    @Column(length = 15) 
    private String name; 

    @Column(length = 40) 
    private String surname; 

    @Column(length = 40,unique=true, nullable=false) 
    private String email; 

    @Column(length = 12) 
    private String phone; 

    @OneToOne 
    private School school; 

    public School getSchool() { 
     return school; 
    } 

    public void setSchool(School school) { 
     this.school = school; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getSurname() { 
     return surname; 
    } 

    public void setSurname(String surname) { 
     this.surname = surname; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getPhone() { 
     return phone; 
    } 

    public void setPhone(String phone) { 
     this.phone = phone; 
    } 
} 

Repository:

@Repository 
public interface DirectorRepository extends CrudRepository<Director, Long> { 

    Director findOneByEmail(String email); 

} 

Methode von Controller:

@RequestMapping(value = "deleteDirector", method = RequestMethod.POST) 
    public String delpost(@ModelAttribute Director director) { 

     try { 
      directorRepository.delete(director.getId()); 
      return "deleteDirectorSuccess-view"; 
     } 
     catch(Exception e){ 

     } 
     return "deleteDirectorError-view"; 
    } 

Ich weiß nicht, was dort geschieht, weil es deleteDirectorSuccess-view kehrt aber nicht gelöscht dieses Objekt aus der Datenbank (Im sicher, dass ID ist korrekt, habe ich versucht, setzen directorRepository.delete(ID_FROM_DATABASE_AS_LONG);, aber es gibt das gleiche Problem .. Wenn ich Skript in der Datenbank wie:

DELETE FROM public.director 
WHERE id=ID_FROM_DATABASE; 

es funktioniert, eine andere Methode in der Steuerung, wo ich Objekt-Datenbank gespeichert werden durch:

directorRepository.save(director); 

funktioniert auch einwandfrei.

Ich habe keine Ahnung, wie man überprüft, warum es falsch ist und wie man mein Problem löst.

+0

Nicht sicher, warum speichern funktioniert. Haben Sie @Transactional Annotation überall verwendet? –

+0

Nein, ich habe nicht @Transactional in meinem Projekt – barmi

+0

versuchen, es auf DelPost-Methode zu verwenden und zu sehen, ob es funktioniert. –

Antwort

0

diesen Code denken Versuchen

@RequestMapping(value = "deleteDirector", method = RequestMethod.POST) 
@Transactional 
public String delpost(@ModelAttribute Director director) { 

    try { 
     Director d = directorRepository.findOne(director.getId()); 
     directorRepository.delete(d); 
     return "deleteDirectorSuccess-view"; 
    } 
    catch(Exception e){ 

    } 
    return "deleteDirectorError-view"; 
} 

I Einheit von Persistenz-Schicht verwaltet müssen, bevor Sie etwas unternehmen. Aber das erklärt nicht, warum save funktioniert.

+0

nichts passiert auch – barmi