如果不存在关联集合,则Hibernate内部联接提取不返回任何内容

时间:2014-08-19 19:29:09

标签: hibernate

我有一个多对一的关联定义如下:

@Entity
@Table(name = "Agent_Assignment", schema = "xxx", catalog = "AAA")
public class AgentAssignment {
    private Set<AgentAssignmentAttr> attributes = new HashSet<AgentAssignmentAttr>();

...

    @OneToMany( fetch=FetchType.EAGER, cascade=CascadeType.ALL, orphanRemoval=true )
    @JoinColumn(name="Agent_Assignment_GUID")
    public Set<AgentAssignmentAttr> getAttributes() {
        return attributes;
    }

    public void setAttributes(Set<AgentAssignmentAttr> attributes) {
        this.attributes = attributes;
    }

}

@Entity
@Table(name = "Agent_Assignment_Attr", schema = "xxx", catalog = "AAA")
public class AgentAssignmentAttr {
...
}

然后将HQL语句定义为以下两个对象:

"from AgentAssignment agtasgn inner join fetch agtasgn.attributes where agtasgn.conversationGuid = :conversationGuid"

问题是,如果表“Agent_Assignment_Attr”中没有与“Agent_Assignment_GUID”的连接列相对应的AgentAssignmentAttr对应的行,那么即使主表“Agent_Assignment”中有一行,它也不会返回任何结果。这将匹配where语句中的条件。

我希望行为是Hibernate会返回AgentAssignment对象,该对象与“where”条件匹配,且AgentAssignmentAttr的集合集为空。

如果遇到同样问题的人可以就如何解决这个问题提供一些指示,我们将不胜感激。

0 个答案:

没有答案