无法初始化代理 - 没有来自java对象的getValue会话

时间:2016-04-24 12:42:39

标签: java hibernate

我有简单的hibernate实体

@Entity
@Table(name = "SomeTable")
public class SomeEntity{

@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "sme_entity_ID", unique = true, columnDefinition = "BINARY(16)")
@Id
@Getter @Setter private UUID entityId;

@Column(name="some_field_name")
@Getter @Setter private String someFiled;

存储库实现中的方法

@Override
@Transactional
public SomeEntity getSomeEntity(UUID someEntityId) {
    return (SomeEntity) getSession().load(SomeEntity.class, someEntityId);
}

当DB中没有实体时,我想在服务中抛出异常。当我发送请求以获取不存在的实体时,它返回com.sun.jdi.InvocationException occurred invoking method.

SomeEntity  someEntity = entityRepository.getSomeEntity(someEntityID);

在这种情况下,someEntity是一个具有空字段的对象。当我尝试从该对象获取一些字段(以检查它是否为null)时,抛出此异常:could not initialize proxy - no Session 为什么只从POJO对象获取值时抛出此异常?

1 个答案:

答案 0 :(得分:0)

Session.load()总是返回“代理”(Hibernate术语),而不会访问数据库。在Hibernate中,proxy是一个具有给定标识符值的对象,它的属性尚未初始化,它看起来就像一个临时假对象。