不确定它是否是一块“馅饼”,但由于您可以从一个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