我是新手使用Hibernate,正在尝试保存一个带有“WorkspaceState”列表的“UserState”。UserState对象由设置的用户名作为键,WorkspaceStates则按UUID方案设置。我的问题是,如果我有一个包含一个WorkspaceState的UserState,那么UserState会被保存,但WorkspaceState不会。
以下是Hibernate映射:
我有一个UserState对象,其中包含一个WorkspaceState。当我执行session.saveOrUpdate(userst)时,我发现Hibernate已经将WorkspaceState从我的userst对象中删除。然后提交操作会将其保存到数据库中,但不包括workspacestate。
事实上,WorkspaceState本身也有列表,但我怀疑我做错了什么。
谢谢!
编辑-提交方式。 HibernateUtil与标准的Hibernate文档示例中所示相同。
以下是Hibernate映射:
<hibernate-mapping>
<class name="UserState" table="USERSTATE">
<id name="owner" type="java.lang.String">
<column name="OWNER" />
<generator class="assigned" />
</id>
<list name="workspaces" inverse="false" cascade="all" table="WORKSPACESTATE" lazy="true">
<key>
<column name="UID" />
</key>
<list-index></list-index>
<one-to-many class="WorkspaceState" />
</list>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="WorkspaceState" table="WORKSPACESTATE">
<id name="uid" type="java.lang.String">
<column name="UID" />
<generator class="uuid" />
</id>
<property name="owner" type="java.lang.String">
<column name="OWNER" />
</property>
</class>
</hibernate-mapping>
我有一个UserState对象,其中包含一个WorkspaceState。当我执行session.saveOrUpdate(userst)时,我发现Hibernate已经将WorkspaceState从我的userst对象中删除。然后提交操作会将其保存到数据库中,但不包括workspacestate。
事实上,WorkspaceState本身也有列表,但我怀疑我做错了什么。
谢谢!
编辑-提交方式。 HibernateUtil与标准的Hibernate文档示例中所示相同。
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
String username = (String) session.merge(state);
transaction.commit();
} catch (HibernateException e) {
transaction.rollback();
e.printStackTrace();
return false;
} finally {
session.close();
}