A. hibernate 一對多的主從表關系,只需要插入子表的信息
從表不是有一個主表對應實體類屬性,就是user。你構造一個adinfo實體,然後setuser,指明一的一方,然後保存從表就行了
B. hibernate如何通過主表信息返回子表對象
所有相關的復子表對象都制在這個set集合中保存著,直接Iterator迭代這個集合,循環取出的就是子表的對象.
比如:
Iterator iter = 對象.getSet集合().iterator();
while(iter.hasNext()) {
// 這里需要強制轉型
子表對象 xxx = (子表對象)iter.next();
}
C. JAVA hibernate中刪除表遇到主鍵被外鍵引用,違反完整約束條件,不能刪除的問題 2張表,一張主表user,有
Oracle提示的錯誤已經很抄明顯了,您在沒有刪除子表記錄的情況下,刪除主表記錄,觸發了完整性約束錯誤。
方法如下:
(方法1)將數據完整性約束交給Oracle處理
您測試一下,在sqlplus中,直接刪除有子表記錄的主表記錄,如果能刪除,可以不用在Hibernate中設置數據完整性。
(方法2)將數據完整性約束交給Hibernate,在Hibernate設置好主子表關系,以及級聯刪除,這樣就去除掉Oracle資料庫中表的完整性約束,也就是不用設置子表的外鍵。Hibernate在您刪除主表記錄時,會替您刪除子表裡相應的記錄。
總之:要麼在Hibernate中設置主子表關系和級聯刪除,而在Oracle中什麼也別設。要麼在Oracle中設置好外鍵以及級聯刪除,而不要在Hibernate中再設置級聯刪除。數據完整性約束只需一方負責即可。記住,別兩面都設置,否則,不是Oracle出錯,就是Hibernate出錯。
如果資料庫伺服器強,就在資料庫中設置級聯刪除,如果不能級聯刪除,需要D修改一項資料庫設置才行。如果Web/Application Server強,就在Hibernate中設置。
D. 關於Hibernate單表中父子關系如何設置
這不久是一個典型的 無限級分類么, 你寫映射文件時 parentDepartment 引用 對應部門的 主鍵 即可~
E. hibernate,mysql,中,主表,子表有外鍵約束(RESTRICT),當刪除子表數據時(被主表使用),如何顯示消息
這個跟java沒有關系,本復身制就是mysql資料庫的問題,重點在 sql上,你要刪除字表的時候,根據你要刪除的字表數據的id去查詢一下主表裡是否有這個id,如果有則不能刪除,沒有則刪除成功。比如
delete from 字表 b where b.RESTRICT not exists(selelect 1 from 主表 a where a.RESTRICT=b.RESTRICT)
F. hibernate怎麼解除子表與父表的關聯關系
可以直接刪除配置文件(*.htm.xml)中的關聯配置;
若只是不想再查詢或刪除等操作時去除關聯關系,則可以設置cascade=none
G. 請問hibernate級聯更新時並不刪除子表數據,只是將其外鍵置為null,是怎麼回事
如果是用實體類標簽@OneToMany的方式,可以設置裡面的orphanRemoval=true,則主類刪除時子類也會刪除,更新回也一樣;否則就只是答將外鍵置空。
如果是manyToOne,應該根本不會有這種級聯刪除、更新需求吧。
H. ORA-02292: 違反完整約束條件 已找到子記錄 有問題的表分別為A B A是主表
Oracle提示的錯誤已經很明顯了,您在沒有刪除子表記錄的情況下,刪除主表記錄,觸發了版完整性約束權錯誤。
方法如下:
(方法1)將數據完整性約束交給Oracle處理
您測試一下,在sqlplus中,直接刪除有子表記錄的主表記錄,如果能刪除,可以不用在Hibernate中設置數據完整性。
(方法2)將數據完整性約束交給Hibernate,在Hibernate設置好主子表關系,以及級聯刪除,這樣就去除掉Oracle資料庫中表的完整性約束,也就是不用設置子表的外鍵。Hibernate在您刪除主表記錄時,會替您刪除子表裡相應的記錄。
總之:要麼在Hibernate中設置主子表關系和級聯刪除,而在Oracle中什麼也別設。要麼在Oracle中設置好外鍵以及級聯刪除,而不要在Hibernate中再設置級聯刪除。數據完整性約束只需一方負責即可。記住,別兩面都設置,否則,不是Oracle出錯,就是Hibernate出錯。
如果資料庫伺服器強,就在資料庫中設置級聯刪除,如果不能級聯刪除,需要D修改一項資料庫設置才行。如果Web/Application Server強,就在Hibernate中設置。
I. Hibernate在刪除子表記錄時不把子表中的外鍵設置為空而是刪除整條記錄
hibernate 配置文件,設置cascade屬性
J. spring hibernatetemplate 怎樣刪除子表數據
打開管道
用抄open函數也可像命令行一襲樣,打開和使用管道.
語法為:
open(MYVAR, "mode");
mode有如下兩種模式:
"|command" 表示對MYVAR的輸出相當於對command的輸入.
"command|" 表示command的輸出作為對MYVAR的輸入.
例如:
open(FILE1, "who|") or die("Could not open file.\n");
while ($line = <FILE1>)
{
print $line;
}