我无法获取作为条件表达式结果的相关实体对象列表。我有两个具有多对多关系的对象,例如ObjectA < - > ObjectB,其中ObjectA的单个实例可以绑定到ObjectB的多个实例,而ObjectB的实例可能绑定到ObjectA的多个实例。这种关系存储在典型的连接表中,但出于遗留原因,对象模型是这样的,即ObjectB不直接了解它与ObjectA的关系。我试图创建一个条件表达式来获取所有通过连接表对象,具有与任何对象A的实例对象B的以下内容:从与休眠条件的关系项目实体
getDetachedCriteria(ObjectAObjectB.class)
.setFetchMode("objectB", FetchMode.JOIN)
.setProjection(Projections.property("objectB"));
但是预期这不起作用,因为它出现Projection API只支持投影标量属性而不支持实体对象。是否可以通过Projections或其他Criteria API指定这种类型的选择?
纠正我,如果我错了,但你的映射是ObjectA N <--> 1 ObjectB所以你应该使用ManyToOne? – overmeulen 2013-02-20 09:19:56
@overmeulen对不起,我误解了这个问题,我更新了我的帖子以纠正一些错误。这种关系实际上是多对多的,但是查询是基于连接表的。 – Clayton 2013-02-21 01:09:26
你能告诉我们你的映射吗?你不能让ObjectB使用双向映射意识到它与ObjectA的关系吗?它不会改变你的数据库模式,它会让事情变得更容易! – overmeulen 2013-02-21 09:47:20