Java JPA/Hibernate与动态对象模型
我有一个列数可变的表(取决于客户), 因此,我正在寻找一种使用JPA/Hibernate或其他工具将这个表映射到java对象的方法 我不能使用POJO,因为它仅限于一个稳定的表,所以我想使用如下java对象Java JPA/Hibernate与动态对象模型,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个列数可变的表(取决于客户), 因此,我正在寻找一种使用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; }
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);
}
当然,查询Hibernate的可能性支持他们所说的动态模型。请进一步参阅以下链接,其中有注释: 持久性实体不一定要表示为 POJO/JavaBean类。Hibernate还支持动态模型(使用 运行时映射的映射)。使用这种方法,您不需要编写 持久类,仅映射文件 Hibernate文档的早期版本提供了更多细节。见: 这里有一个示例(快速浏览)似乎允许将普通POJO与动态字段相结合
如果您不知道您的模式。你应该选择Nosql。MongoThank谢谢你的回答,但我不得不使用relationale数据库(现在是sqlserver)查看动态模型谢谢Alan,它看起来很有趣。在你的链接v(3.3)中说:以下功能目前被认为是实验性的,在不久的将来可能会改变。在本通知中,我希望hibernate能够保持和维护这种喜爱。不幸的是,文档非常简单。但在这个想法中,这又与我的目标相符,艾伦,我也发现了这个链接:
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;