Estoy tratando de eliminar una fila de una base de datos por id. Cuando hago DELETE localhost:8080/id (usando cartero) obtengo una excepción de sql: org.postgresql.util.PSQLException: ERROR: la columna "deleted_at" es de tipo bigint pero la expresión es de tipo timestamp con zona horaria
Mi RequestMapping se parece a:
@RequestMapping (value = "/{id}", method = RequestMethod.DELETE) public String delete (@PathVariable Long id){ Class class = classRepository.findOne(id); class.setDeletedAt(System.currentTimeMillis()/1000); classRepository.delete(class); return "\"OK\""; }Entidad:
@Entity @SQLDelete(sql = "UPDATE class SET deleted_at = now() where id = ?") @Where(clause="deleted_at is NULL") public class Class extends SoftDeleteableEntity { private String name; private String address; // setters and getters }Eliminación suave:
public abstract class SoftDeleteableEntity extends BaseEntity { protected Long deletedAt; // setters and getters }Entidad base:
@MappedSuperclass public abstract class BaseEntity implements Serializable{ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; public void setId(Long id) { this.id = id; } }La interfaz Class Repository amplía JpaRepository sin código y anotación @Component. La clase ClassService es con la anotación @Service que solo @Autowires repositorio.
Intenté usar classRepository.save (clase) en lugar de eliminar, pero luego no puedo guardar los datos en la base de datos.
He estado buscando en los foros una solución, pero parece que no puedo encontrar una. Cualquier ayuda o consejo sería apreciado.
PD: soy nuevo en la programación (aprendiendo Spring durante 2 semanas) y lo siento si me perdí alguna respuesta existente en stackoverflow o si pregunté algo de manera incorrecta.