2016-04-24 7 views
0

からのgetValueには、セッションを私はリポジトリの実装では、単純なHibernateのエンティティは、プロキシを初期化しないことができませんでした - 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には実体がない場合、私がしたいですサービスで例外をスローします。私は非既存のエンティティを取得するための要求を送信するときには、この場合のsomeEntityでcom.sun.jdi.InvocationException occurred invoking method.

SomeEntity someEntity = entityRepository.getSomeEntity(someEntityID); 

を返すヌルフィールドを持つオブジェクトです。このオブジェクトからフィールドを取得しようとすると(nullかどうかを調べるために)、この例外がスローされます。could not initialize proxy - no Session なぜPOJOオブジェクトから値を取得するだけでこの例外がスローされるのですか?

答えて

0

Session.load()は、常にデータベースを叩くことなく「プロキシ」(休止状態の用語)を返します。 Hibernateでは、プロキシは与えられた識別子の値を持つオブジェクトであり、そのプロパティはまだ初期化されていません。一時的な擬似オブジェクトのように見えます。

関連する問題