2016-04-24 8 views
0

Ich habe einfach Hibernate Einheitkonnte nicht Proxy initialisieren - keine Session auf getValue von Java-Objekt

@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; 

und Verfahren in Repository Implementierung

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

Wenn es keine Einheit in DB ist, möchte ich Ausnahme im Dienst werfen. Wenn ich Anfrage senden nicht vorhandene Einheit, um es zurückgibt com.sun.jdi.InvocationException occurred invoking method.

SomeEntity someEntity = entityRepository.getSomeEntity(someEntityID); 

In diesem Fall someEntity ist ein Objekt mit Null-Felder. Und wenn ich versuche, ein Feld von diesem Objekt zu bekommen (um zu überprüfen, ob es Null ist), wird diese Ausnahme ausgelöst: Warum wird diese Ausnahme ausgelöst, wenn man nur Wert vom POJO-Objekt bekommt?

Antwort

0

Session.load() immer einen "Proxy" (Hibernate Begriff) zurückgeben, ohne die Datenbank zu treffen. In Hibernate ist Proxy ein Objekt mit dem angegebenen Bezeichnerwert, seine Eigenschaften sind noch nicht initialisiert, es sieht nur wie ein temporäres falsches Objekt aus.

Verwandte Themen