Hibernate.Удалить неиспользуемую запись - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть таблица, которая выглядит так:

ID  USER_NAME ROOM_ID
 1  user1   13
 2  user2   11  
 3  user3   null
 4  user4   4   
 5  user5   2   

А Room table

ID  ROOM_NAME SQUARE
13  room1   17
 4  room2   42  
 2  room3   26
11  room4   37  
 5  room5   28  

В моем приложении я могу изменить ROOM_ID пользователя, например, на Null. И после этого у меня будет одна «Неиспользованная» комната (в этой комнате нет пользователя).

Итак, вопрос: Как я могу автоматически удалить эту комнату, используя Hibernate?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Попробуйте этот код - подробности см. В комментариях:

Session session = null;
if(session == null) {
    initTransaction();
}

Room room = (Room) session.createCriteria(UserRoomTable.class); // First table Pojo class name
room.add(Restrictions.isNull("roomId"));
session.delete(room); // This deletes the unused entry
0 голосов
/ 09 ноября 2018

для этого можно использовать триггер:

CREATE OR REPLACE FUNCTION delete_room()
  RETURNS trigger AS
$BODY$
BEGIN
 DELETE FROM ROOMS WHERE (OLD.ROOM_ID = ID)
 RETURN NEW;
END;
$BODY$


CREATE TRIGGER delete_room_changed
  BEFORE UPDATE
  ON USERS
  FOR EACH ROW
  EXECUTE PROCEDURE delete_room()

таким образом, когда вы обновляете любого пользователя, назначенная комната удаляется

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