Ich habe ein Workbench-Berechtigungssystem mit Gruppen und Berechtigungen implementiert. Eine Referenztabelle workbench_group_permissions_reference
enthält Verweise, so dass ich leicht Berechtigungen zu einer Gruppe hinzufügen und entfernen kann. Das Hinzufügen eines neuen Referenzeintrags funktioniert einwandfrei, das Entfernen jedoch nicht. Ich bekomme keinen Fehler, aber die Referenz existiert nach dem Entfernen immer noch in der Datenbank. Ich benutze postgreSQL.JPA - Eintrag aus der Referenztabelle löschen
Hier ist meine Referenzklasse:
@XmlRootElement
@Entity
@Table(name = "workbench_group_permissions_reference", uniqueConstraints = {
@UniqueConstraint(columnNames = { "workbenchgroupspermissions_id", "workbench_groups_id" }) })
public class WorkbenchGroupPermissionReferenceEntity extends BasicEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn(name = "workbenchgroupspermissions_id")
private WorkbenchPermissionEntity workbenchPermission;
@ManyToOne
@JoinColumn(name = "workbench_groups_id")
private WorkbenchGroupEntity workbenchGroup;
/**
* Empty constructor to make JPA happy.
*/
public WorkbenchGroupPermissionReferenceEntity() {
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public WorkbenchPermissionEntity getWorkbenchPermission() {
return workbenchPermission;
}
public void setWorkbenchPermission(WorkbenchPermissionEntity workbenchPermission) {
this.workbenchPermission = workbenchPermission;
}
public WorkbenchGroupEntity getWorkbenchGroup() {
return workbenchGroup;
}
public void setWorkbenchGroup(WorkbenchGroupEntity workbenchGroup) {
this.workbenchGroup = workbenchGroup;
}
}
Das ist meine Methode remove:
public void deleteWorkbenchGroupPermission(final WorkbenchGroupPermissionReferenceEntity workbenchGroupPermission) {
long id = workbenchGroupPermission.getId();
super.delete(WorkbenchGroupPermissionReferenceEntity.class, id);
}
Und die super.delete Methode:
protected void delete(final Class<?> type, final Object id) {
Object ref = this.em.getReference(type, id);
this.em.remove(ref);
}
Was ich hier fehlt?
teilen sich den Code für Ihre 'super.delete (..)' Methode. Wir haben keine Ahnung, was es tut – Ranjeet
Könnte der Grund sein: https://stackoverflow.com/questions/34840903/silently-ignored-remove –
@Dark hinzugefügt die fehlende Super-Methode –