java - 加载没有关联的实体

标签 java spring hibernate

假设我有以下实体和关联:

实体A:

@Entity
public class A {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@OneToMany(mappedBy = "a", cascade = CascadeType.ALL, orphanRemoval = true)
private List<B> b;

}

实体 B:

@Entity
public class B {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "a_id")
private A a;

@OneToMany(mappedBy = "b", cascade = CascadeType.ALL, orphanRemoval = true)
private List<C> c;

}

实体 C:

@Entity
public class C {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "b_id")
private B b;

}

使用 CrudRepository.findAll() 方法为实体 A 返回每个 A及其关联的 B 在列表中。此外,每个 B 都将在列表中包含其关联的每个 C

我的问题是:如果我在某些情况下只想加载所有 A 及其 B,但我不想要 CB 中,这可能吗?我可以创建自定义查询来执行此操作,还是有其他方法?我希望很清楚我想要实现的目标。

最佳答案

我认为您的问题是 OneToMany 关系的 one 端的 mappedBy 值。 mappedBy 值必须是另一端的变量名。所以在你的情况下,你可以这样做:

  1. 在实体 A 中:将 mappedBy = "citizen" 更改为 mappedBy = "a"
  2. 在实体 B 中:将 mappedBy = "citizen" 更改为 mappedBy = "b"

我知道实体 a、b、c 只是一个示例,但在设计模型关系时应遵循上述模式。

关于java - 加载没有关联的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436806/

相关文章:

java - 如何在运行后将 swing 组件文本更新为不同的区域设置

Spring @ExceptionHandler 处理多种异常

java - Spring boot应用程序创建两个数据库行

hibernate - 在唯一列中的行之间切换值

java - spring-boot中的@ControllerAdvice注释是什么,为什么以及何时使用它?

java - 使用 apache HttpClient 4.1.2 上传 3 GB 文档

SpringMVC - 方法可以返回重定向(字符串)或 ModelAndView

java - Spring Boot Swagger 2 配置错误创建名称为 'documentationPluginsBootstrapper' 的 bean

hibernate - Grails-如何使用条件获取一对多关系

java - 如何创建支持 Spring 的 Eclipse 插件?