关于关联的示例查询

rot*_*sch 6 hibernate query-by-example

你不能在关联上使用QBE是非常令人沮丧的.

我有一个大型数据表,大约有8对多列.每个列都有一个下拉列表来过滤表.

我们假设如下:

表用户

User { id, UserStatus, UserAuthorization }
Run Code Online (Sandbox Code Playgroud)

我想使用这段代码:

Criteria crit = getSession().createCriteria(class);
crit.add(Example.create(userObject));
Run Code Online (Sandbox Code Playgroud)

这不适用于以下示例userObject:

User id=1 { UserStatus=Active, UserAuthorization=Admin }
Run Code Online (Sandbox Code Playgroud)

因为QBE不支持馆藏.

解决此问题的一种方法是以这种方式使用它:

crit.createCriteria("UserStatus").add(Example.create(userStatusObject));
crit.createCriteria("UserAuthorization").add(Example.create(userAuthorizationObject));
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使用给定的User对象动态编程.除了使用QBE还有其他方法吗?

Fir*_*iro 3

您可以结合 QBE 和普通表达式来处理 QBE 不支持的部分

Criteria crit = getSession().createCriteria(class);
    .add(Example.create(userObject));
    .add(Expression.eq("UserStatus", userObject.getUserStatus()));
Run Code Online (Sandbox Code Playgroud)