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
行。关系是正确的。
发生了什么事?
答案 0 :(得分:1)
我没有看到你的整个代码库,但是在 95%的情况下你的对象因为你离开事务上下文而被分离(或者你首先不在事务中)。< / p>
只要用于保存,加载,获取或查找实体的会话已关闭,实体就会分离。这意味着它不再连接到会话,并且像任何其他POJO一样工作。
答案 1 :(得分:1)
我发现了问题。在我的代码中,我调用了session.clear()。这导致我的所有实体都被分离了。