Widziałem w komentarzu, że chciałbyś to osiągnąć bez oprzyrządowania bajtodemu. Można to osiągnąć poprzez implementację interfejsu FieldHandled
i przez modyfikację modułów pobierających i ustawiających dla pola leniwego.
HBM
<property name="deletable" type="true_false" lazy="true">
<formula>(select something from other tables and such....)</formula>
</property>
JAVA
import org.hibernate.bytecode.javassist.FieldHandled;
import org.hibernate.bytecode.javassist.FieldHandler;
public class Person implements FieldHandled {
/* allows lazy formulas without hibernate bytecode instrumentation */
private FieldHandler fieldHandler;
public FieldHandler getFieldHandler() { return fieldHandler; }
public void setFieldHandler(FieldHandler fieldHandler) { this.fieldHandler = fieldHandler; }
private Boolean deletable;
public void setDeletable(Boolean deletable) {
if(fieldHandler!=null)
fieldHandler.writeObject(this, "deletable", this.deletable, deletable);
this.deletable = deletable;
}
public Boolean getDeletable() {
if(fieldHandler!=null)
return (Boolean)fieldHandler.readObject(this, "deletable", deletable);
return deletable;
}
}
Inny przykład można znaleźć here. Ale to jest leniwe ładowanie relacji jeden-do-jednego.
dzięki za odpowiedź, co z mavenem? czy istnieje sposób na osiągnięcie tego "instrumentarium bajtowego" w maven? Ponieważ używam maven i nie mam nic wspólnego z mrówką. – destan
można użyć wtyczki 'maven-antrun-plugin', która może uruchamiać zadania Ant w obrębie Maven. Zobacz: http: //doginpool.blogspot.com/2012/03/bytecode-instrumentation-for-hibernate.html –
Oprzyrządowanie Bytecode w maven: http://tricksdev.blogspot.ru/2009/03/hibernate-bytecode -instrumentation.html –