Hibernate не может удалить объект - PullRequest
0 голосов
/ 23 января 2019

У меня есть 2 объекта Компания и Меню Компания имеет много меню.

Объект компании:

public class Company {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL,mappedBy = "company")
    private Set<Menu> menus;

    //other fields getters and setters

Пункт меню:

public class Menu {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(fetch = FetchType.EAGER, optional = false)
    @JoinColumn(name = "company_id", nullable = false)
    private Company company;

//other fields getters and setters

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

Служба:

    public boolean deleteMenu(long id) throws ResourceNotFoundException {
        try{
            menuRepository.deleteMenuById(id);
            return true;
        }catch (Exception e){
            throw e;
        }
    }

MenuRepository:

public interface MenuRepository extends CrudRepository<Menu, Long> {
    public Menu findMenuById(Long id);
    public void deleteMenuById(long id);
}

РЕДАКТИРОВАТЬ

Поскольку я полагаю, что проблема заключается в том, что транзакция откатывает изменения в этом случае, я обнаружил эту ошибку: транзакция молча откатилась, потому что она была помечена какоткатить только

1 Ответ

0 голосов
/ 23 января 2019

Я думаю, что оператор throws в вашем методе удаления мешает вам поймать фактическое создаваемое исключение. throws ResourceNotFoundException вам не поможет.

Во-вторых, измените ваш каскад на cascade = CascadeType.REMOVE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...