Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA/Hibernate与动态对象模型_Java_Hibernate_Jpa - Fatal编程技术网

Java JPA/Hibernate与动态对象模型

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; }

我有一个列数可变的表(取决于客户), 因此,我正在寻找一种使用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);
}

当然,查询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;