Yorumda bytecode cihazları olmadan bunu gerçekleştirmek istediğinizi gördüm. Bu, FieldHandled
arayüzünün uygulanmasıyla ve tembel alan için alıcıları ve ayarlayıcıları değiştirerek elde edilebilir.
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;
}
}
Bir başka örnek here bulunabilir. Ama bu bire bir ilişki yükleme tembel.
Cevabınız için teşekkürler, ne maven hakkında? maven'deki bu "bytecode instrumentation" şeyini elde etmenin bir yolu var mı? Çünkü maven kullanıyorum ve karınca ile hiçbir ilgim yok. – destan
, Maven’deki Ant görevlerini çalıştırabilen 'maven-antrun-plugin' eklentisini kullanabilirsiniz. Bkz: http: //doginpool.blogspot.com/2012/03/bytecode-instrumentation-for-hibernate.html –
Marangozda bayt kodu: http://tricksdev.blogspot.ru/2009/03/hibernate-bytecode –