2016-04-24 72 views
0

我有簡單的休眠實體無法初始化代理 - 上的getValue從Java對象沒有會話

@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對象獲取值時拋出此異常?

回答

0

Session.load()總是返回一個「代理」(Hibernate術語)而不觸及數據庫。在Hibernate中,proxy是一個具有給定標識符值的對象,其屬性尚未初始化,它看起來像是一個臨時假對象。

相關問題