Java 当使用Hibernate从数据库加载EMF容器时,Econtainer null

Java 当使用Hibernate从数据库加载EMF容器时,Econtainer null,java,hibernate,emf,Java,Hibernate,Emf,我有一个EMF包含层次结构:房子包含一个房间列表,使用ecore文件表示 在持久化之前,当我最初创建房子并用房间填充它时,房间对象的EconContainer值会正确显示包含的房子。然后我使用Hibernate(不涉及Teneo)来保存房子(cascade保存了房间) 当我重新加载House对象时,我会得到所有房间的引用。但是,房间的EconContainer值现在为空。这是相关的,因为我使用EcoreUtil.delete(bathy)从包含房间的房间中删除房间,这使用了EObject.eco

我有一个EMF包含层次结构:房子包含一个房间列表,使用ecore文件表示

在持久化之前,当我最初创建房子并用房间填充它时,房间对象的EconContainer值会正确显示包含的房子。然后我使用Hibernate(不涉及Teneo)来保存房子(cascade保存了房间)

当我重新加载House对象时,我会得到所有房间的引用。但是,房间的EconContainer值现在为空。这是相关的,因为我使用EcoreUtil.delete(bathy)从包含房间的房间中删除房间,这使用了EObject.ecocontainer()

相关Hibernate映射:

 <class name="House" table="house" lazy="false">
 <bag name="rooms" lazy="true" cascade="save-update, delete">
        <key update="true">
            <column name="house_id" unique="false"/>
        </key>
        <one-to-many class="Room"/>
 </bag>
 </class>
 <class name="Room" table="room" lazy="false">
 </class>


我应该如何删除EMF对象?我应该调用EcoreUtil.delete(obj)以外的东西吗?我是否应该在加载时手动添加eContainer引用?我应该更改hibernate映射吗?

hibernate要求每个属性都有一个getter和setter。在EMF中(至少不使用Teneo),有一个房间的getter,但没有setter

public EList<Room> getRooms() {
    if (rooms == null) {
        rooms = new EObjectContainmentEList<Room>(Room.class, this, housePackage.HOUSE__ROOM);
    }
    return rooms;
}
public EList getRooms(){
如果(房间==null){
rooms=新的EObjectContainementElist(Room.class,this,housePackage.HOUSE\uuuuuuuuu-Room);
}
返回室;
}
我在下面提供了我自己的setter

public void setRooms(List<Room> roomList) {
    this.rooms = new BasicEList<>();
    this.rooms.addAll(roomList);
}
公共无效设置房间(列表房间列表){
this.rooms=新巴塞尔主义者();
this.rooms.addAll(roomList);
}
这是不正确的,因为BasicEList不提供任何EMF通知,因此没有设置EconContainer。我改为以下内容,它在底层实现中使用了一个EObjectContainementElist,到目前为止似乎还可以工作

public void setRooms(List<Room> roomList) {
    ECollections.setEList(getRooms(), roomList);
}
公共无效设置房间(列表房间列表){
setList(getRooms(),roomList);
}

不使用Teneo的原因是什么?这是EMF和Hibernate之间的桥梁…主要原因(可能不是一个好的原因)是我们从一开始就在使用Hibernate,不知道迁移到Teneo会有多困难。我建议在尝试构建自己的桥梁之前,在Teneo(EMF技术)论坛上询问迁移策略。作者反应相当积极。我相信这不是你落入的唯一陷阱。。。