当 bean 类与一对多注释链接时,使用 hibernate 在 db 上选择查询:

Posted

技术标签:

【中文标题】当 bean 类与一对多注释链接时,使用 hibernate 在 db 上选择查询:【英文标题】:select query on db using hibernate when bean classes are linked with one to many annotation: 【发布时间】:2016-09-22 16:28:34 【问题描述】:

下面是我的两门课

@实体 @Table(name="用户") 公共类用户

@Id
@Column(name="users_id")
private String userId;

@Column(name="uname")
private String userName;

@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="users_id")
private Set<Address> addresses;

getters & setters

@实体 @Table(name="地址") 公共类地址

@Id
@Column(name="address_id")
private String addressId;

@Column(name="City")
private String City;

@ManyToOne
private User user;

setters & getters

用户和地址是两个表,其中一个用户可以有多个地址。 userID 是这两个表之间的公共列。

现在我想编写一个选择查询来从用户表中获取用户的详细信息以及与该用户相关的所有地址,并相应地准备一个 bean 列表。

请帮忙。 提前致谢。

【问题讨论】:

【参考方案1】:

我假设您使用的是休眠会话而不是 JPA EntityManager。 此查询将返回 ID 为“123”的用户,并填写相应的地址。

Query query = session.createQuery("select user from User user left join fetch user.addresses where user.userId = :userId");
query.setParameter("userId", "123");
User user = (User) query.uniqueResult();

【讨论】:

以上是关于当 bean 类与一对多注释链接时,使用 hibernate 在 db 上选择查询:的主要内容,如果未能解决你的问题,请参考以下文章

一对多和一对多连续映射的休眠条件查询 - 表或视图不存在

Java 中mybatis 关系映射,比如:一对多

当关联表是一个对所有一对多关系时,如何实现一对多映射?

当 bean 具有带有 @Formula 注释的属性时,findRowCount 不起作用

当 @Repository 注释 bean 的代理时,JdkDynamicAopProxy 需要超过 1 分钟才能启动调用方法

休眠一对多映射注释问题