不確定它是否是一塊「餡餅」,但由於您可以從一個Properties實例存儲XML並從XML加載一個實例,因此您可以在持有XML的實體上擁有一個@Lob屬性,堅持。 喜歡的東西:
class MyEntity implements Serializable {
@Transient
Properties props;
@Lob
byte[] xmlProp; //the xml as a byte[]
//ids, getters & setters ommited
}
然後你就可以實現一個DAO做到堅持和檢索您實體的辛勤工作:
class MyEntityDAO {
public void persist(MyEntity entity){
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
entity.getProps().storeToXML(bos, "a simple comment if you like");
byte[] byteStream = bos.toByteArray();
entity.setXmlProp = byteStream;
//save your instance with hibernate...
} catch (IOException e) {
e.printStackTrace();
}
}
public MyEntity retrieveById(Long id){
Properties propFromDB = new Properties();
MyEntity ent = //retrieve the instance with hibernate...
try{
Properties propFromDB = new Properties();
ByteArrayInputStream bais = new ByteArrayInputStream(ent.getXmlProp());
propFromDB.load(bais);
ent.setProp(propFromDB);
return ent;
} catch (IOException ioe){
ioe.printStackTrace();
}
return null;
}
}
檢查方法storeToXML和loadFromXML在java.util.Properties API。
希望這有助於;
Bozho,我假設你會讓屬性實例爲瞬態的,但是在什麼時候將屬性導出到地圖?我不確定何時實現它的機制。 – 2011-03-24 13:06:18
@Jason Nichols我的意思是一個手動過程。或者可能是'@ PreX'事件監聽器。也許它可以通過UserType,但我從來沒有寫過,所以我不能說。 – Bozho 2011-03-24 13:15:39