java - 如果我们使用@embedded注解,HQL(hibernate查询语言)需要如何改变?

标签 java hibernate spring-mvc spring-boot spring-data-jpa

Spring MVC + Hibernate
我有两个包含用户数据的表。
现在我想上两堂课。
1. 用户
2. 地址 -> 因为我们可以在很多地方使用它。
我们在这方面有一种关系。

@Embedded
class Address

class user
{
@Autowired
Address address;
}

这是好主意还是坏主意?

因此我必须在 hibernate 查询中进行更改吗?

最佳答案

实现 has-a 关系是个好主意。

使用 Embeddable 注释创建类 Address 来定义公共(public)列(属性)

@Embeddable
class Address{
    String city;    
    String state;
}

在 User 类中使用具有关系

public class User {
    @Embedded
    private Address address;
}

您可以这样查询:

session.createQuery( "select u from User u where u.address.city=:city" ).setParameter( "city", 'ahmedabad' ).list();

或者:

    session.createQuery( "select u from User u where u.address.city in (:city)" ).setParameterList( "city", Arrays.asList( 'surat', 'ahmedabad' ) ).list();

关于java - 如果我们使用@embedded注解,HQL(hibernate查询语言)需要如何改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51472969/

相关文章:

java - 如果我在命令行中输入 Ctrl-C,Java 中的 finally block 还会执行吗?

postgresql - @OneToMany 在创建父实体时 Pesist Child

java - Spring boot + Thymeleaf - 编辑时 id 为 null 的对象

angular - 从 Angular 和 Spring MVC API 下载文件

java - 如何在 Spring MVC 中使用 @Scheduled(cron = "0 0/1 * * * *") 自动生成 xls 报告

java - 文字是否应该被通用接口(interface)替换

java - 为什么 Mockito 不模拟静态方法?

java - 无法阻止 Spring Data JPA 在每次运行应用程序时重新创建表

hibernate - 是否有一个很好的 GUI 可用于显示 Hibernate 统计信息?

java - Heroku 中的 R14 和 R10 部署 Spring MVC 应用程序