加载没有关联的实体

问题描述 投票:2回答:1

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

实体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;

}

使用.findAll()CrudRepository方法实体A,它将返回每个A及其相关的B列表。此外,每个B将列出其中每个相关的C

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

java spring hibernate
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.