我有一个表的列数是可变的(取决于客户), 所以我想找到一种方法来使用JPA / Hibernate或其他
将该表映射到java对象我不能使用POJO,因为它仅限于稳定表,所以我想使用这样的java对象
class MyObject {
int id;
Map<String, Object> fields = new Map<String, Object>();
public void setId(int id) {
this.id = id;
}
public void setField(String key, Object value) {
fields.put(key, value);
}
}
用于存储MyObject的表:
TABLE MYTABLE (
ID INTEGER,
FIELD1 VARCHAR,
FIELD2 DATE,
FIELD3 INTEGER
)
MyObject myObject = new MyObject();
myObject.setId(id);
myObject.setField("FIELD1" , "hello world");
myObject.setField("FIELD2" , new Date());
myObject.setField("FIELD3" , 21)
Action to save myObject in db;
当然还有查询的可能性
答案 0 :(得分:2)
Hibernate支持他们所谓的动态模型。进一步查看以下链接:
持久性实体不一定必须表示为 POJO / JavaBean类。 Hibernate还支持动态模型(使用 运行时的地图地图)。用这种方法,你不写 持久化类,只映射文件。
以前版本的Hibernate文档提供了更多细节。参见:
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#persistent-classes-dynamicmodels
这里有一个例子(从快速浏览),允许将普通POJO与动态字段组合。