как удалить строку при весенней загрузке - PullRequest
0 голосов
/ 04 августа 2020

Я пишу это в моем JpaRepository

@Modifying
@Query("DELETE FROM Backlog b WHERE b.code = ?1")
void deleteBacklog(String code);

, и это мой метод:

@Transactional
    @Override
    public Integer deleteBacklog(String code) {
        try {
            backlogRepository.deleteBacklog(code);
            return IReturnedValues.DELETE_BACKLOG_SUCCESS;
        }catch(Exception e){
            return Integer.MAX_VALUE;
        }
    }

Я получил это в консоли:

Hibernate: delete from backlog where code=?

но когда я проверяю свою базу данных, у меня все еще есть строка. Как я называю свой метод:

if(code == null || code == "") {
            //user exist, check if the code is valid or not
            response=ResponseEntity.ok(IReturnedValues.DELETE_BACKLOG_TOKEN_VALIDE);
}else {
                        //check if exist a backlog with this code 
                        List<Backlog> backlog = backlogMetier.findByCode(code);
                        if(backlog == null) {
                            response= ResponseEntity.ok(IReturnedValues.DELETE_BACKLOG_CODE_NOT_EXISTE);
                        }else if(backlog != null){
                            try {
                                //delete the backlog
                                retour=backlogMetier.deleteBacklog(code);
                                response= ResponseEntity.ok(retour);
                            } catch (Exception e) {
                                return ResponseEntity.ok(responseClassMax);
                            }
                            
                        }
                    }

это моя сущность:

@Entity
public class Backlog {
    
    @Id @GeneratedValue
    private Long idBacklog;
    private String code;
    @ManyToOne(fetch=FetchType.LAZY)
    private Utilisateur userBacklog;
    private Date creationDate;
    private String title;

//getters & setters
//constructors

}

И заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

используйте этот код

   @Repository
public interface BookRepository extends CrudRepository<Book, Long> {
    long deleteByTitle(String title);
}

протестируйте этот метод

@Test
@Transactional
public void whenDeleteFromDerivedQuery_thenDeletingShouldBeSuccessful() {
    long deletedRecords = repository.deleteByTitle("The Hobbit");
    assertThat(deletedRecords).isEqualTo(1);
}
0 голосов
/ 04 августа 2020
 @Query(value=""DELETE FROM Backlog b WHERE b.code = :code")
  void deleteBacklog(@Param("code") String code);

Кажется, ошибка запроса, попробуйте код выше.

...