我正在做我自己的项目并且有一些东西要存储在mysql数据库中。 在考虑什么应该是最佳解决方案之后不要再次在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
在hibernate实体中,我会有这样的关系:
在实体Cars_CreationDate
和Cars
@ManyToMany之间,关系所有者为Cars_CreationDate
。因为许多Cars
可以在一个日期制作,而一个日期可以有很多车。
在实体Cars_Description
和Cars
@ManyToOne之间,关系的所有者是Cars
实体,实体Cars_Description
属于Cars
。每次使用Cars_Description
从数据库中提取实体Cars
。 fetchType=EAGER
现在让我们看看我们是否已经在DataBase中创建了一些Cars
并且我想为这些车添加新的日期我会说:
Cars cars = (Cars)session.get(Cars.class, int idindatabase);
//如果我们针对不同的汽车执行此操作的次数多一次,我们将相同 Cars_Description_VALUE
对应不同的汽车,因此它看起来像这样
2013-07-03 to CarOne
2013-07-03 to CarTwo
2013-07-03 to CarTree
等等。所以我不需要每次都重复这个日期。
怎么不让这个问题成为???谢谢
答案 0 :(得分:0)
我认为使用单独的实体/表存储单个值以避免必须将其写出来没有多大价值 - 汽车有日期或汽车有日期参考。我把日期记录在Car中并完成它。但从理论上讲,你想要的是Car中的外键来引用你的日期。每辆车都有一个日期ID,用于查找日期行/实体。然后你的日期对象可以有一个1:M的关系,所以他们可以拥有一系列汽车 在CarEntity:
@ManyToOne
@JoinColumn(name="CREATIONDATE_ID"
DateEntity creationDate;
在DateEntity中:
@OneToMany(mappedby="creationDate")
Collection<CarEntity> cars;