Java 如何在Spring boot中获取对嵌套对象进行检查的对象?
我无法使用JpaRepository获得我想要的内容。我将尝试使用以下代码解释我想要什么: 存储库Java 如何在Spring boot中获取对嵌套对象进行检查的对象?,java,mysql,spring,spring-boot,Java,Mysql,Spring,Spring Boot,我无法使用JpaRepository获得我想要的内容。我将尝试使用以下代码解释我想要什么: 存储库 @Repository public interface CompanyRepository extends JpaRepository<Company, Long> { Optional<Company> findByIdAndBranches_parent_idIsNull(Long id); } 但这就是我得到的 { "id": 1, "name": "
@Repository
public interface CompanyRepository extends JpaRepository<Company, Long> {
Optional<Company> findByIdAndBranches_parent_idIsNull(Long id);
}
但这就是我得到的
{
"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"
}
]
}如果需要筛选出关联的实体,可以使用。它不是JPA规范的一部分,但Hibernate的JPA实现提供了此注释。因此,您可以指定任何其他条件:
public class Company
{
...
@OneToMany(mappedBy = "company")
@Where(clause = "parent_id is null")
private List<Branch> branches;
@OneToMany(mappedBy = "company")
private List<User> users;
}
然后您必须更改存储库的方法名称,因为您不再需要额外的条件:
@Repository
public interface CompanyRepository extends JpaRepository<Company, Long> {
Optional<Company> findById(Long id);
}
使用这种方法,你总是可以得到那些只有分支机构而没有母公司的公司。如果您需要获取公司的所有分支机构,无论它们是否具有父级,您可以为分支机构实体类创建和使用存储库。这是一个反复询问的问题。如果只需要特定分支,则查询需要选择分支。您可以查询选择的公司。所以你有公司。当你要求一家公司的分支机构时,你得到的是公司的分支机构,因为公司的分支机构总是包含公司的所有分支机构:这是方法的契约。假设你有两个兄弟,名叫约翰和保罗。你的问题相当于问谁有一个叫约翰的兄弟。我明白你的意思,拉克西亚。然后我问你谁是你的兄弟。这相当于调用company.getBranchs。显然,答案是约翰和保罗。如果我只想要兄弟们叫约翰,那么我应该问谁是拉克西亚的兄弟,谁叫约翰。那我就只找你哥哥约翰了。那怎么办呢?我是春季的初学者,我没有从任何教程中得到任何其他东西。你能指引我吗?那与春天无关。用于从数据库中获取数据的技术名为JPA,其实现为Hibernate。这是您应该查找文档的地方。
{
"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"
}
]
public class Company
{
...
@OneToMany(mappedBy = "company")
@Where(clause = "parent_id is null")
private List<Branch> branches;
@OneToMany(mappedBy = "company")
private List<User> users;
}
@Repository
public interface CompanyRepository extends JpaRepository<Company, Long> {
Optional<Company> findById(Long id);
}