0

OneToMany関係の子クラスのIDプロパティに基づいて結果を単純に除外しようとしていますが、Hibernate(4.1.9.Final)は内部結合ではなく左外部結合を生成しているため、結果を返しません。欲しい。

モデル:

親:

@Entity
@Table(name = "CATEGORY")
public class Category
{
    @Id
    @Column(name = "CATEGORYID")
    private int ID;

    @Column(name = "CATEGORYNAME")
    private String name;

    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "CATEGORYID")
    @Filter(name = "TEST_RUN_ID_FILTER")
    private Collection<TestCase> testCases
...
}

子:

@Entity
@Table(name = "TESTCASE_NEW")
@FilterDef(name = "TEST_RUN_ID_FILTER", defaultCondition = "TESTRUNID in (:IDS)", parameters = { @ParamDef(name = "IDS", type = "int") })
public class TestCase
{
    @Id
    @Column(name = "TESTCASEID")
    private int ID;

    @Column(name = "TESTCASENAME")
    private String name;

    @Column(name = "STATUS")
    private String status;

    @Column(name = "TESTRUNID")
    private int testRunId;
...
    }

DAO:

public List<Category> getAllCategoriesForTestRuns(List<Integer> testRunIDs)
    {
        Session session = getSession();
        session.enableFilter("TEST_RUN_ID_FILTER")
                .setParameterList("IDS", testRunIDs);
        Query query = session.createQuery("FROM " + Category.class.getSimpleName());
        List<Category> result = query.list();
        return resul2t;
    }

内部結合を使用するようにHibernateに指示するにはどうすればよいですか?

4

1 に答える 1

0

次のように試すことができます。

select c from Category c inner join c.testCases tc
于 2013-03-19T14:56:50.267 に答える