Tôi thấy trong nhận xét rằng bạn muốn đạt được điều này mà không có công cụ bytecode. Điều này có thể đạt được bằng cách thực hiện giao diện FieldHandled
và bằng cách sửa đổi getters và setters cho trường lười.
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;
}
}
Một ví dụ khác có thể được tìm thấy here. Nhưng đó là lười biếng tải một mối quan hệ một-một.
cảm ơn câu trả lời của bạn, còn con quạ thì sao? là có một cách để đạt được điều này "bytecode thiết bị đo đạc" điều trong maven? Bởi vì tôi đang sử dụng maven và không có gì để làm với kiến. – destan
bạn có thể sử dụng plugin 'maven-antrun-plugin' có thể chạy tác vụ Ant trong Maven. Xem: http: //doginpool.blogspot.com/2012/03/bytecode-instrumentation-for-hibernate.html –
Thiết bị mã hóa Bytecode trong maven: http://tricksdev.blogspot.ru/2009/03/hibernate-bytecode -instrumentation.html –