Я не могу получить то, что собираюсь, используя JpaRepository.Я попытаюсь объяснить, что я хочу, используя следующий код:
Репозиторий
@Repository
public interface CompanyRepository extends JpaRepository<Company, Long> {
Optional<Company> findByIdAndBranches_parent_idIsNull(Long id);
}
Сервис
@Service
public class BillService {
@Autowired
private CompanyRepository companyRepository;
@Autowired
private BranchRepository branchRepository;
public Company getCompanyById(Long id)
{
Optional<Company> company = companyRepository.findByIdAndBranches_parent_idIsNull(id);
return company.get();
}
Фирменный класс
public class Company
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String address;
@OneToMany(mappedBy = "company")
private List<Branch> branches;
@OneToMany(mappedBy = "company")
private List<User> users;
}
Класс сущности филиала
@Entity
public class Branch
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String address;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "company_id")
private Company company;
@JsonIgnore
@ManyToOne(cascade = CascadeType.ALL )
@JoinColumn(name = "parent_id")
@NotFound(action = NotFoundAction.IGNORE)
private Branch parent;
@OneToMany(mappedBy = "parent")
@NotFound(action = NotFoundAction.IGNORE)
private List<Branch> subBranches;
@OneToMany(mappedBy = "branch")
private List<User> users;
}
Теперь я хочу получить компанию с филиалами, имеющими родительский идентификатор NULL, но получающими все ветви независимо от родительского идентификатора
Это то, что я хочу в результате
{
"id": 1,
"name": "Lakshya",
"address": "Bahadurgarh",
"branches": [
{
"id": 1,
"name": "Lakshya Branch1",
"address": "Bahadurgarh1",
"subBranches": [
{
"id": 3,
"name": "Lakshya Branch1_3",
"address": "Bahadurgarh1_3",
"subBranches": [],
"users": []
}
],
"users": [
{
"id": 3,
"name": "User3_Company1_Branch1",
"address": "Bgz"
}
]
}
],
"users": [
{
"id": 1,
"name": "User_Company1",
"address": "Bgz"
},
{
"id": 2,
"name": "User_Company1_Branch1",
"address": "Bgz"
},
{
"id": 3,
"name": "User3_Company1_Branch1",
"address": "Bgz"
}
]
}
Но это то, что я получаю
{
"id": 1,
"name": "Lakshya",
"address": "Bahadurgarh",
"branches": [
{
"id": 1,
"name": "Lakshya Branch1",
"address": "Bahadurgarh1",
"subBranches": [
{
"id": 3,
"name": "Lakshya Branch1_3",
"address": "Bahadurgarh1_3",
"subBranches": [],
"users": []
}
],
"users": [
{
"id": 3,
"name": "User3_Company1_Branch1",
"address": "Bgz"
}
]
},
{
"id": 3,
"name": "Lakshya Branch1_3",
"address": "Bahadurgarh1_3",
"subBranches": [],
"users": []
}
],
"users": [
{
"id": 1,
"name": "User_Company1",
"address": "Bgz"
},
{
"id": 2,
"name": "User_Company1_Branch1",
"address": "Bgz"
},
{
"id": 3,
"name": "User3_Company1_Branch1",
"address": "Bgz"
}
]
}