我正在做我自己的項目,並且有一些東西要存儲在mysql數據庫中。 想到什麼應該是最好的解決方案之後不要在DataBase中重複同樣的值,我沒有找到答案。如何使用Hibernate修復DataBase中相同數據的數量
因此,讓我們的榜樣,
表Cars
與行Cars_ID
和Cars_VALUE
-=JoinTable between Cars and Cars_CreationDate=-
表Cars_CreationDate
與行Cars_CreationDate_ID
和Cars_CreationDate_VALUE
-=JoinTable between Cars_CreationDate and Cars_Description=-
表Cars_Description
與行Cars_Description_ID
和Cars_Description_VALUE
在休眠實體我有這樣的關係:
實體Cars_CreationDate
和Cars
@ManyToMany之間,關係的所有者是Cars_CreationDate
。因爲許多Cars
可以在一個日期和一個日期可以有許多汽車。
實體Cars_Description
和Cars
@ManyToOne之間,關係的所有者是Cars
實體,實體Cars_Description
屬於Cars
。每次從Cars
提取數據庫實體Cars_Description
。 fetchType=EAGER
現在讓我們看看,如果我們在數據庫中的一些Cars
已經做出,我想新的日期到這個車,我會說: Cars cars = (Cars)session.get(Cars.class, int idindatabase);
//如果我們這樣做了幾次更針對不同的汽車,我們將有THE SAMECars_Description_VALUE
對應於不同的汽車所以它會看起來像這樣
2013年7月3日至蒈
2013年7月3日至CarTwo
2013-07-03到CarTree
等。所以我不需要每次重複這個日期。
如何不讓這個問題?謝謝
它不清楚是什麼問題。您將汽車添加到日期的汽車集合中。數據庫中只有一個日期,但與連接表使用ManyToMany關係意味着每個關係都會將一行添加到連接表中。如果汽車只能有一個創建日期(看起來很可能),那麼可以使用1:m並讓汽車對creationDate使用1:1,以便它的表中有外鍵。或者直接將日期放在汽車實體中,而不用單獨的表格。 – Chris
先生,你幾乎回答我的問題。是我的車只有一個日期。但是,如果我會嘗試將相同的日期添加到不同的汽車,那麼不需要將日期添加到數據庫,只是因爲它是同一個日期。爲什麼我必須添加它並將其複製到我的數據庫中?對?我認爲我很多事情都是因爲我認爲它不會爲每輛車添加相同的日期,它會讓開發者決定如何完成它。我以爲只是爲了更時尚的編程技術而宣稱許多東西,從來沒有想過它取決於插入。那麼JoinTable怎麼樣?我必須使用它們嗎?或者FK更多。 –