我正在研究spring hibernate應用程序,並嘗試使用非id多對一關係的列從表中刪除。 實體類是:休眠HQL刪除查詢使單列失效
@Entity
public class Day {
@id(name = "DAY_ID")
dayId;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "DAY_ID")
List<Holiday> holidayList;
...
}
@Entity
public class Holiday {
@id(name="HOLIDAY_ID")
holidayId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "DAY_ID")
Day day;
...
}
我想刪除使用HQL從假期表中的一行。
String query = "DELETE FROM Holiday WHERE day.dayId = " + dayObject.getdayId();
Query holidayDeleteQuery = getSession().createQuery(query);
holidayDeleteQuery.executeUpdate();
在控制檯中我得到適當的刪除查詢,但在檢查數據庫發現,該行仍然存在,只是現在在假期表的DAY_ID欄爲空。我無法弄清楚爲什麼會發生這種情況?
編輯:幫助!我的主要問題是爲什麼DAY_ID列更改爲空值?
當你說你正在得到一個正確的刪除查詢,你可以發佈SQL?我真誠地懷疑你得到的刪除查詢是正確的,因爲這意味着你的數據庫沒有正確地進行簡單的刪除。 – Thor84no
嗨生成查詢是Hibernate:從HOLIDAYS刪除其中DAY_ID = 1 – parbi
這就是當你有show_sql = true時Hibernate打印出來的日誌,或者你只是假設如果字符串查詢是好的? – Thor84no