Ho visto nel commento che si desidera ottenere ciò senza la strumentazione bytecode. Ciò può essere ottenuto implementando l'interfaccia FieldHandled
e modificando getter e setter per il campo lazy.
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;
}
}
Un altro esempio può essere trovato here. Ma questo è pigro che carica una relazione uno-a-uno.
grazie per la tua risposta, che ne pensi di Maven? c'è un modo per ottenere questa cosa in "strumentazione bytecode" in Maven? Perché sto usando Maven e non ho niente a che fare con la formica. – destan
puoi usare il plugin 'maven-antrun-plugin' che può eseguire compiti Ant all'interno di Maven. Vedere: http: //doginpool.blogspot.com/2012/03/bytecode-instrumentation-for-hibernate.html –
Strumentazione del codice in uso: http://tricksdev.blogspot.ru/2009/03/hibernate-bytecode -instrumentation.html –