0

我正在尝试将以下查询与 Hibernate 的 session.createSQLQuery 一起使用。user对应的 Entity 对象有一个名为address的属性。地址对象是从表 'user' 的 5 个字段中创建的。如果我不使用 SQLQuery,它会自动填充。但是,如果没有 SQLQuery,我将无法从下面显示的所需连接中获得所有信息。用户实体对象还具有我正在使用的 accessPlan 之类的属性

.addEntity("accessPlan", AccessPlan.class)

询问:

SELECT 
    user.*, 
    ap.*,
    country.*,
    auth.*, 
    GROUP_CONCAT(coup.code SEPARATOR ' ') coupons
FROM 
    user
    INNER JOIN access_plan ap ON (user.access_plan = ap.id)
    INNER JOIN country ON (user.country=country.code)
    LEFT JOIN user_auth auth ON (user.id = auth.userid)
    LEFT JOIN (
        SELECT 
                    trans.user_id,coupon.code
        FROM 
                    payments_transaction AS trans
        INNER JOIN payments_coupon coupon ON (trans.payments_coupon_id=coupon.id)
    ) coup ON (user.id=coup.user_id)    
GROUP BY user.id;

在使用 SQLQuery 时 填充组合地址对象的最简单方法是什么?或者 有没有办法避免使用 SQLQuery 进行这样的查询?

4

1 回答 1

0

请查看“返回多个实体” 部分中的以下示例

String sql = "SELECT ID as {c.id}, NAME as {c.name}, " + 
     "BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} " +
     "FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID";

List loggedCats = sess.createSQLQuery(sql)
    .addEntity("cat", Cat.class)
    .addEntity("mother", Cat.class).list()

在您的情况下,猫 = 用户,母亲 = 地址......有点像这样。

我目前没有什么可以尝试的,但我想这会有所帮助。

于 2015-08-24T12:38:08.210 回答