【问题标题】:How to fetch object using the List Association in Hibernate如何使用 Hibernate 中的列表关联获取对象
【发布时间】:2019-07-25 12:24:43
【问题描述】:

我有一个带有 setter 和 getter 的 A 类

class A{
  private int id;
  private List<B> b;
}

我想根据 B 对象获取 A 对象。所以假设我有一个 B 对象列表,我想获取包含 B 的 A 对象。 所以我决定使用in 这是代码

Criteria criteria = session.createCriteria(A.class).setCacheable(false); 
criteria.add(Restrictions.in("b",{list of B})).list();

这会产生错误java.sql.SQLException: No value specified for parameter 1

如何使用 B 获取对象 A

【问题讨论】:

    标签: java hibernate criteria


    【解决方案1】:

    你应该先加入B的:

    Criteria criteria = session.createCriteria(A.class)
       .setCacheable(false)
       .setFetchMode("bList", FetchMode.JOIN)
       .createAlias("bList", "b");
    

    然后使用IN 作为b 的ID:

    criteria.add(Restrictions.in("b.id",{list of B})).list();
    

    无论您是否希望 B 的列表也与 A 分开,都相应地设置您的获取模式。

    【讨论】:

    • 感谢您的快速回复。这给了我一个错误could not resolve property: b of: A
    • 列表是否使用 OneToMany / ManyToMany 注释?
    • 你确定这个列表被命名为'b'并且有一个getter:'getB()'吗?
    • 我认为这里的问题是,它无法找到别名,b 现在是别名,根据您的代码
    • 更新了分析器..你需要在限制中的 b.id 而不仅仅是 b
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2019-10-07
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多