Hibernate 选择具有给定属性的集合元素

2023-12-29

Entity Project具有集合属性contributors映射为@OneToMany与实体的关系User

@Entity
@Table( name = "projects" )
public class Project {
    ...

    @OneToMany
    @JoinTable(name = "project_contributors")
    private List<User> contributors = new ArrayList<User>();

    ...
}

然后我需要检查是否contributors已经有一个user with id contributorId添加之前。我正在尝试使用 HQL 查询,但我显然很无能。

我正在尝试什么:

Query query = session.createQuery(
        "select p.contributors from Project p where p.id = :pId and p.contributors.id = :cId"
    );

query.setParameter("pId", projectId);
query.setParameter("cId", contributorId);

@SuppressWarnings("unchecked")
List<User> res = (List<User>) query.list();

但它给出了错误

illegal attempt to dereference collection [project0_.id.contributors] with element property reference [id]

有好心人愿意给我一点推动吗?

我做的另一个尝试是

"select p.contributors as c from Project p where p.id = :pId and c.id = :cId"

但什么也没有。


contributors是一个集合。因此,它没有名为 id 的属性。

Id 是该 Collection 元素的一个属性。

您可以通过加入集合而不是取消引用来解决该问题:

SELECT p 
  FROM Project pj 
  JOIN pj.contributors  p 
 WHERE pj.id       = :pId
   AND p.Id     = :cId
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 选择具有给定属性的集合元素 的相关文章

  • 如何在 Hibernate 中使用 SELECT 进行 INSERT

    我需要在休眠中实现以下请求 insert into my table max column values select max id from special table where 如何在休眠中使用注释来做到这一点 Special tab
  • @MappedSuperclass 和 @OneToMany

    我需要关联 OneToMany从乡村到超一流Place MappedSuperclass 它可以是双向的 我需要类似的东西 OneToAny MappedSuperclass public class Place private Strin
  • 在 Spring Context 中创建 JPA EntityMananger 时出现问题

    我有一个 JPA Spring 应用程序 它使用 Hibernate 作为 JPA 提供程序 在代码的一部分中 我必须使用 new 运算符在应用程序中手动创建 DAO 而不是使用 Spring DI 当我这样做时 Spring 不会处理 P
  • JPA - createEntityManagerFactory 返回 Null

    菜鸟问题在这里 我正在跟进这个例子 教程 http schuchert wikispaces com JPA Tutorial 1 Getting Started Create 20Your 20First 20Entity为了尝试找出我在
  • mysql 和 hsqldb 兼容的 TEXT 字段

    我有一个使用 mysql 数据库的应用程序 但我想在 hsqldb 内存数据库中运行该应用程序的单元测试 问题是我的一些持久模型对象具有我注释为columnDefinition TEXT 的字段 以强制mysql满足长字符串值 但现在hsq
  • 如何仅在数据库、模式和表尚不存在时自动创建它们

    我想创建一个简单的网络应用程序 允许远程客户端跟踪发布请求中的某些内容 将所有跟踪保存在轻量级数据库中 返回 get 请求的所有跟踪 关于数据库 我想 将其位置放在我的 web 应用程序的属性文件中 并将此位置用于 persistence
  • Spring Data JPA 和 Exists 查询

    我正在使用 Spring Data JPA 使用 Hibernate 作为我的 JPA 提供程序 并想要定义一个exists附加 HQL 查询的方法 public interface MyEntityRepository extends C
  • 使用 JPAMetaModelEntityProcessor 的优点?

    我刚刚浏览了下面的链接 http hop2croft wordpress com 2011 07 07 criteria jpa 2 0 and database metamodel auto Generation with maven h
  • 为什么这个 Hibernate MySQL 连接是只读的?

    我有一个在 MySQL 数据库上使用 Spring 和 Hibernate 的应用程序 由于某种原因 截至过去几天 每当我尝试将任何对象保留到数据库中时 都会收到以下错误 java sql SQLException 连接是只读的 导致数据修
  • 如何在JSP中显示对象的数据

    我已通过注册表将一些用户详细信息存储到数据库 hibernate 和 spring 中 我想在单独的 JSP 页面中显示所有用户的用户详细信息 有人可以告诉我该怎么做吗 下面是我的控制器代码 Controller public class
  • 在我的网络应用程序中从 spring 收到“未找到线程绑定请求”错误

    我在网络应用程序中收到 未找到线程绑定请求 错误 希望获得一些帮助 我正在尝试使用struts2 spring hibernate 并使用spring来管理hibernate会话工厂 并将hibernate会话注入到我的struts操作中
  • 默认值在休眠中不起作用

    我有用columnDefinition指定列的默认值 但它不存储默认值 它只存储 null 请帮忙解决这个问题 下面是我的代码 private String sourceFrom Column name SourceFrom columnD
  • 如何在HibernateJpaAutoConfiguration中指定packagesToScan?

    我在用着HibernateJpaAutoConfiguration直接在 Spring 单元测试中 休眠时和EntityManager配置完成后 不会扫描任何实体 例外 10 29 36 377 main INFO o s b f a Au
  • 使用 JPA/Hibernate 将复合主键和外键与共享列映射

    我花了一段时间尝试使用复合主键和外键 共享 3 列中的 2 列 来计算以下 JPA Hibernate 映射 但到目前为止还没有什么乐趣 示例表如下 黄色键列包含 PK 蓝色键列包含 FK 到目前为止 我提供了以下映射 这种映射有效 它从数
  • 比较休眠映射的日期?

    如何使用 Hibernate 将日期从 java 对象映射到数据库 我尝试不同的方法 但我对它们不满意 为什么 让我解释一下我的问题 我有以下类 1 包括我调用的主要方法和以下映射 2 当您查看控制台输出时 您可以看到有关此方法的问题 fa
  • org.hibernate.QueryException:JPA 样式的位置参数不是整数序数

    我有以下 JPQL 请求 Query value select req t from TransactionRelation tr inner join tr requestTransaction req t inner join req
  • 使用 Hibernate 在 MySQL 中存储字节数组

    我正在尝试保存带有字节数组字段的实体 我在 MySQL 数据库之上使用 Hibernate 和 JPA 这是字段定义 对于嵌入式 H2 数据库来说效果很好 Entity name blob public class Blob Lob Bas
  • Hibernate如何使用order by子句按字段总和排序

    如何使用 order by 子句按字段总和排序 Entity class MyClass private int a private int b HQL 工作正常 从 MyClass myclass 中选择 myclass ORDER BY
  • Hibernate:session.load 与 session.get

    我的印象是session load 在缓存中加载代理对象session get 总是访问数据库 但看完 JavaBrains 后我很困惑video https youtu be RmnrgocuivQ list PL4AFF70118497
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成

随机推荐