Java nd父对象和子对象之间的关系。检索整个父对象实体以查找子对象不是一个好方法,因为父对象可能包含blob数据或其他数据。 @Entity public class Parents { @Id @GeneratedValue(strateg

Java nd父对象和子对象之间的关系。检索整个父对象实体以查找子对象不是一个好方法,因为父对象可能包含blob数据或其他数据。 @Entity public class Parents { @Id @GeneratedValue(strateg,java,spring,jpa,Java,Spring,Jpa,nd父对象和子对象之间的关系。检索整个父对象实体以查找子对象不是一个好方法,因为父对象可能包含blob数据或其他数据。 @Entity public class Parents { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private long Id; @NotNull private String firstName; @NotNull private Strin


nd父对象和子对象之间的关系。检索整个父对象实体以查找子对象不是一个好方法,因为父对象可能包含blob数据或其他数据。
@Entity 
public class Parents {
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private long Id;
    @NotNull
    private String firstName;
    @NotNull
    private String lastName;
    @OneToMany(fetch = FetchType.LAZY, mappedBy="parents") 
    private List<Kids> kids;
    // constructor + getters & setters
@Entity
public class Kids {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long Id;
    @NotNull
    private String firstName;
    @NotNull
    private String lastName;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "parents_id")
    @NotNull
    private Parents parents;

    public Kids() {
    }

    public Kids(String firstName, String lastName, Parents parents) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
        this.parents = parents;
    }
    // getters & setters
public interface KidsRepo extends CrudRepository<Kids, Long> {
   List<Kids> findKidsByParentId(Parents Id);
}
@Controller
public class HomeController {
    KidsRepo kidsRepository;

    @Autowired
    public void setKidsRepository(KidsRepo kidsRepository) {
        this.kidsRepository = kidsRepository;
    }
}
@Service
public class KidsService {
    KidsRepo kidsRepository;
    ParentsRepo parentsRepository;

    @Autowired
    public void setKidsRepository(KidsRepo kidsRepository) {
        this.kidsRepository = kidsRepository;
    }
    @Autowired
    public void setParentsRepository(ParentsRepo parentsRepository) {
        this.parentsRepository = parentsRepository;
    }
    public List<Kids> getKids(Parents id) {
        return kidsRepository.findKidsByParentId(id);
    }
}
@Query("select k from Kids k where k.parents.id = :parentId")
List<Kids> findKidsByParentId(Long parentId);
public interface KidsRepository extends CrudRepository<Kids, Long> {
    List<Kids> findByParent_Id(Long id);
}
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Parent {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    private String firstName;
    @NotNull
    private String lastName;
}
@Controller
@AllArgsConstructor
public class ParentController {
    private KidService kidService;
    private ParentService parentService;

    /**
     * The program stores kids and one of their parents (or both)
     * when I search the name of the parent the program should display the name of kid (or kids).
     */
    private String findParent(@PathVariable String parentName, Model model) {
        Parent parent = parentService.findParent(parentName);
        List<Kid> kids = kidService.findAllKidsForParent(parentName);

        model.addAttribute("parent", parent);
        model.addAttribute("children", kids);
        // render to appropriate view
        return "home";
    }
}
@Service
@AllArgsConstructor
public class ParentService {
    private ParentRepository parentRepository;

    public Parent findParent(String parentName) {
        return parentRepository.findParentByFirstName(parentName);
    }
}
public interface ParentRepository extends JpaRepository<Parent, Long> {
    Parent findParentByFirstName(String firstName);
}
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Kid {

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

    @NotNull
    private String firstName;
    @NotNull
    private String lastName;

    @NotNull
    @ManyToOne
    private Parent parent;
}
@Service
@AllArgsConstructor
public class KidService {
    private KidRepository kidRepository;

    public List<Kid> findAllKidsForParent(String parentName) {
        return kidRepository.findAllByParent_FirstName(parentName);
    }
}
public interface KidRepository extends JpaRepository<Kid, Long> {
    List<Kid> findAllByParent_FirstName(String firstName);
}
// find All kids by parent id (_ to enter into id of the parents is not necessary)
List<Kids> findAllByParentsId(long parentId);
List<String> kidsName = kidsRepository.findAllByParentsId(42l).stream()
                 .map(Kids::getFirstName)
                 .collect(Collectors.toList());