在Hibernate中的集合中插入新项目 - > Ehcache-entry将完全变为空

时间:2014-09-26 11:20:01

标签: hibernate ehcache

我有容器类型,带有一组项目,以及带有容器引用的tiems。

对于我的问题,关系的哪一方管理持久性,收集方或参考方并不重要。

Container c=new Container(12L);
Item i=new Item(1L);
Item i2=new Item(2L);
i.setContainer(c);
c.addItem(i);
i2.setContainer(c);
c.addItem(i2);


session.save(c);
session.save(i);
session.save(i2);


tx.commit();

然后在新的会话中我遍历集合,然后集合将在Ehcache中,如[1L,2L],

c=session.get(Container.class,12L);
Set<Item>items=c.getItems();
Iterator<Item>iterator=items.iterator();

然后在新会话中,我创建一个新项目,将其添加到集合中,

c=session.get(Container.class,12L);

Item i3=new Item(3L);
i3.setContainer(c);
c.getItems().add(i3);
session.save(i3);


tx.commit();

在数据库中,将在items表中插入一个新行,其中包含容器表中行的外键,所以这没关系。

但是在Ehcache中删除了[1L,2L],没有添加新值,因此Ehcache条目为空。

我做错了什么?

以下是我对Hibernate文件的映射:

<class
        name="Container"
>
        <cache
                usage="read-write"/>
        <id
                name="id"
                column="id__"
        >
        <set
                name="items"
                inverse="true"
        >
                <cache usage="read-write"/>
                <key
                        column="container_"
                        not-null="true"
                ></key>
                <one-to-many class="Item"/>
        </set>
 </class>




<class
        name="Item"
>
        <cache
                usage="read-write"/>
        <id
                name="id"
                column="id_"
        >

        <many-to-one
                name="container"
                column="container_"
                not-null="false"

        >
        </many-to-one>
 </class>

0 个答案:

没有答案