I've created a queryredirector on Delete in order to use soft delete but it updates database after being called for second time.
@QueryRedirectors(delete = DeleteRedirector.class)
public class EMPLOYEE {
}
public class DeleteRedirector implements QueryRedirector
{
@Override
public Object invokeQuery(DatabaseQuery query, Record arguments, Session session)
{
ClassDescriptor descriptor = session.getDescriptor(query.getReferenceClass());
DeleteObjectQuery deleteObjectQuery = (DeleteObjectQuery) query;
EMPLOYEE emp = (EMPLOYEE) deleteObjectQuery.getObject();
emp.setStatus("deleted");
UpdateObjectQuery updateObjectQuery = new UpdateObjectQuery(emp);
descriptor.addDirectQueryKey("status", "STATUS");
updateObjectQuery.setDescriptor(descriptor);
deleteObjectQuery.setDescriptor(updateObjectQuery.getDescriptor());
return updateObjectQuery.execute((AbstractSession) session, (AbstractRecord) arguments);
}
}
Am I missing sth ?