Hibernate为什么我的对象变得分离了?

时间:2016-11-02 14:53:29

标签: java hibernate dictionary

Map<String, Type> myMap = new HashMap<String, Type>();

Query query = session.createQuery("" +
        "SELECT a " +
        "FROM Articulo a ");
List<Object> list = query.list();

// Add all query elements to the hashmap
for (Object entrada : lista) {
    myMap.put(entrada.getKey(), (Type) entrada);
// Type someOtherObject = entrada.getReferencedProperty();
}

Type someObject = (Type) myMap.get("someValidKey").getReferencedProperty(); //normal getter

此处someObject出现null并且对象已分离。但是,如果我取消注释someOtherObject行。关系是正确的。

发生了什么事?

2 个答案:

答案 0 :(得分:1)

我没有看到你的整个代码库,但是在 95%的情况下你的对象因为你离开事务上下文而被分离(或者你首先不在事务中)。< / p>

来自related answer

  

只要用于保存,加载,获取或查找实体的会话已关闭,实体就会分离。这意味着它不再连接到会话,并且像任何其他POJO一样工作。

答案 1 :(得分:1)

我发现了问题。在我的代码中,我调用了session.clear()。这导致我的所有实体都被分离了。