在我的数据库中,我有一个实体表(我们称它为Entity)。每个实体可以具有许多实体类型,并且实体类型的集合是静态的。因此,存在一个连接表,其中包含实体ID和实体类型名称的行。在我的代码中,EntityType是一个枚举,而Entity是一个Hibernate映射的类。
在实体代码中,映射如下所示:
1 2 3 4 5 6 7 8 9
| @CollectionOfElements
@JoinTable(
name ="ENTITY-ENTITY-TYPE",
joinColumns = @JoinColumn(name ="ENTITY-ID")
)
@Column(name="ENTITY-TYPE")
public Set<EntityType> getEntityTypes() {
return entityTypes;
} |
哦,我是否提到我正在使用注释?
现在,我想做的是创建HQL查询或使用Criteria搜索特定实体类型的所有Entity对象。
Hibernate论坛中的此页面说这是不可能的,但是此页面已经成立18个月了。谁能告诉我此功能是否已在最新版本的Hibernate中实现,或已计划在即将发布的版本中使用?
HQL:
1
| select entity from Entity entity where :type = some elements(entity.types) |
我认为您也可以这样写:
1
| select entity from Entity entity where :type in(entity.types) |
您的关系是否是双向的,即EntityType是否具有Entity属性?如果是这样,您可能可以做类似entity.Name from EntityType where name = ?
的操作