我有2班餐食和日子。 一天可以有几顿餐,一顿可以在几天内送达。 我用一天中的所有食物存储一天对象。 和没有类型Day属性的Meal对象。 代码如下:一对多没有外键进入休眠状态
public class Day {
Date date;
private Map<Meal, List<Integer>> mealsLines;
public Day() {
} ....
}
public class Meal implements java.io.Serializable {
private long id;
private String name;
public Meal() {
} ....
<hibernate-mapping>
<class name="data.Day" table="DAY">
<id name="date" type="java.sql.Date" access="field">
<column name="DATE" />
<generator class="assigned" />
</id>
<map name="mealsLines" table="MEAL" lazy="true" access="field">
<key>
<column name="DATE" />
</key>
<map-key type="data.Meal"></map-key>
<one-to-many class="data.Meal" />
</map>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="data.Meal" table="MEAL">
<id name="id" type="long">
<column name="ID" />
<generator class="identity" />
</id>
<property name="name" type="java.lang.String" access="field">
<column name="NAME" />
</property>
</class>
</hibernate-mapping>
所以现在这些地图,我得到两个表:
膳食
ID名称---->日期< ----错
日
DATE
这是无稽之谈,因为一顿饭可以在一天以上被切断。 我不想在外面吃饭的外键。我怎么能意识到这一点? 谢谢
_Why_没有你要的外键?您是否可能将外键的数据库级概念与关系的对象级概念和对另一个对象的引用相混淆?它们是不一样的,而且这恰恰是Hibernate的目的......使您可以将概念分开并在它们之间进行映射。 – cdeszaq