Vi en el comentario que le gustaría lograr esto sin la instrumentación de bytecode. Esto se puede lograr implementando la interfaz FieldHandled
y modificando los getters y setters para el campo flojo.
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;
}
}
Otro ejemplo se puede encontrar here. Pero eso es perezoso al cargar una relación uno a uno.
gracias por su respuesta, ¿qué hay de maven? ¿Hay alguna manera de lograr esta cosa de "instrumentación bytecode" en maven? Porque estoy usando maven y no tengo nada que ver con la hormiga. – destan
puede usar el complemento 'maven-antrun-plugin' que puede ejecutar tareas Ant en Maven. Ver: http: //doginpool.blogspot.com/2012/03/bytecode-instrumentation-for-hibernate.html –
Instrumentación de código de bytes en maven: http://tricksdev.blogspot.ru/2009/03/hibernate-bytecode -instrumentation.html –