0

我有一个看起来像这样的表:

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

和房间表

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

在我的应用程序中,我可以更改用户的 ROOM_ID,例如为 Null。在此之后,我将拥有一个“未使用”的房间(这个房间里没有用户)。

所以,问题是:如何使用 Hibernate 自动删除这个房间?

谢谢!

4

2 回答 2

1

您可以为此使用触发器:

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()

这样,当您更新任何用户时,分配的房间将被删除

于 2018-11-09T13:00:43.537 回答
-1

试试这个代码 - 有关详细信息,请参阅评论:

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
于 2018-11-09T13:11:52.897 回答