0

我有实体用户和报告

class User {
    @JoinColumn(name = "user_id")
    protected Set<BattleReport> reports;
}

class Report {
    byte data;
}

我知道用户 ID,我需要在不加载用户的情况下更新用户的报告数据。怎么做?

我已经尝试过这种方式,但它不起作用:

Query reportsQuery = session.createQuery("SELECT reports FROM User WHERE id = :id");
    reportsQuery.setParameter("id", id);
    List<?> list = reportsQuery.list();

    for (Object o : list) {
        Report report = (Report) o;
        report.setData(42);
        session.update(report);
    }
4

3 回答 3

1

匹配报告用户的 id:

Query reportsQuery = session.createQuery(
    "FROM Report r WHERE r.user.id = :id");
于 2013-09-07T13:54:10.637 回答
0

您是否尝试过使用 user_id 作为约束对 Report 表进行 Criteria 查询?我不知道你的数据库关系或字段,因此不能给你一个真实的例子,但以下内容可能是有用的:

标准示例

于 2013-09-07T15:04:34.477 回答
0

正确答案是:

SELECT u.reports FROM User u WHERE u.id = :id
于 2013-09-07T14:09:32.110 回答