我正在尝试将以下查询与Hibernate的session.createSQLQuery一起使用。 与用户对应的Entity对象具有名为地址的属性。 地址 对象是从表格'用户' 的 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时,填充组合 地址 对象的最简单方法是什么? 的 OR 有没有办法避免像这样的查询使用SQLQuery?
答案 0 :(得分:0)
请在下面的示例中查看' Returning multiple entities'
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()
在你的情况下,cat = user,mother = address ...有点像。
目前我没有任何可以尝试的东西,但我想这会有所帮助。