Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Hibernate多态中的查询_Hibernate_Database Design - Fatal编程技术网

Hibernate多态中的查询

Hibernate多态中的查询,hibernate,database-design,Hibernate,Database Design,我对Hibernate比较陌生,正在尝试将一个相对简单的现有数据库迁移到可以与Hibernate一起使用的数据库中,并且正在寻找有关如何构造我的应用程序的建议 我有3种类型的实体: 项目 类别 属性类型 项目、类别和属性类型均相似;它们都有名称、描述、创建日期等,但都有其他单独的功能: 项目有一个具体的位置URL 类别包含类别和项目之间的多对多关联中的项目和/或类别集,以及从父类别到子类别的邻接列表。 PropertyType是一个元数据键,用于与项、类别或其他PropertyType关联的键/

我对Hibernate比较陌生,正在尝试将一个相对简单的现有数据库迁移到可以与Hibernate一起使用的数据库中,并且正在寻找有关如何构造我的应用程序的建议

我有3种类型的实体:

项目 类别 属性类型 项目、类别和属性类型均相似;它们都有名称、描述、创建日期等,但都有其他单独的功能:

项目有一个具体的位置URL 类别包含类别和项目之间的多对多关联中的项目和/或类别集,以及从父类别到子类别的邻接列表。 PropertyType是一个元数据键,用于与项、类别或其他PropertyType关联的键/值字段的属性表中 现在我已经在单独的表中定义了Item和Category,但是我想知道是否应该创建一个抽象的节点实体类,Item和Category都是它的子类。PropertyType差异很大,它可能应该位于自己的表中。对于属性,我只有3个条目,其中一个PropertyType应用于另一个PropertyType,如果这样做更简单的话,可能会删除它们,以便PropertyType始终应用于节点

目前,我的属性表包含PropertyTypeId、属性所应用的项目ID、类别或PropertyType、上一个字段的ID\u上下文鉴别器的字段:0=项目、1=类别、2=PropertyType和值任意字符串

具体问题:

如果我确实希望维护现有的表结构(例如,Item和Category有不同的表),我如何告诉Hibernate使用id\u上下文鉴别器来确定属性类型?我是否必须使Item/Category/PropertyType成为公共祖先的子类,以便在获取与给定PropertyType关联的属性对象时,它可以返回包含Item或Category的列表

我应该使用Hibernate吗?我知道如何使SQL查询实现我想要的功能,只是在考虑如何将Hibernate包装起来时遇到了麻烦

我需要做什么来推动Hibernate执行我想要的查询?e、 g.如果我只想返回属性记录,其中PropertyType为258,应用于类别对象id_context=2,我知道如何在SQL SELECT*中从PropertyType=258和id_context=2的属性中执行,但不确定如何在Hibernate中执行


hibernate当前不支持外键引用和外键侧的鉴别器列所需的内容。真正的Hibernate狂热者可能会争辩说,它也不是一个可靠的关系模型,因为您无法定义外键约束

要使用Hibernate对此进行建模,您必须合并所有三种实体类型,或者有两个单独的列,一个引用要统一的项/类别,另一个引用PropertyType:本质上将PropertyType类拆分为两个不相交的子类

基本上,您必须更改整个数据库设置以适应Hibernate

有理由转向休眠,而不是“透明”的ORM。我认为您应该查看应用程序中的其他地方,以确定Hibernate是否适合它:您面临哪些问题?您希望Hibernate解决什么问题?Hibernate提供了许多有益的功能: -延迟加载 -延迟写入仅在发送提交时写入数据库 -一级和二级缓存 -


欢呼者

你计划使用Hibernate XML映射文件或注释吗?喜欢注释,但会考虑XML。