Я думал использовать @JoinTable
, чтобы иметь возможность отображать имя ребенка, когда я ищу по его родителю , но немного борюсь с ним.
Программа хранит детей и одного из их родителей (или обоих), и когда я ищу имя родителя, программа должна отображать имя ребенка (или детей).
Необходимы два интерфейса:
ID (PK, NN, AI, int)
NAME (NN, String)
ID (PK, NN, AI, int)
NEV (NN, String)
PARENTS_ID (NN, int)
Программа должна использовать соединение FK и OneToMany, ManyToOne, которое использует поиск и сохраните .
Буду признателен за любые предложения о том, как лучше всего использовать код sh.
Parents. java
@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
Дети. java
@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
data. sql
INSERT INTO Parents (first_name, last_name) VALUES ('Viz','Elek');
INSERT INTO Parents (first_name, last_name) VALUES ('Locsolok','Anna');
INSERT INTO Parents (first_name, last_name) VALUES ('Kezmuves','Kelemen');
INSERT INTO Kids (first_name, last_name, parents_id) VALUES ('Nagy','Zolika', (SELECT id FROM Parents WHERE last_name = 'Elek'));
INSERT INTO Kids (first_name, last_name, parents_id) VALUES ('Cserkesz','Misike', (SELECT id FROM Parents WHERE last_name = 'Elek'));
INSERT INTO Kids (first_name, last_name, parents_id) VALUES ('Mézesb','Ödönke', (SELECT id FROM Parents WHERE last_name = 'Anna'));
KidsRepo. java
public interface KidsRepo extends CrudRepository<Kids, Long> {
List<Kids> findKidsByParentId(Parents Id);
}
HomeController. java
@Controller
public class HomeController {
KidsRepo kidsRepository;
@Autowired
public void setKidsRepository(KidsRepo kidsRepository) {
this.kidsRepository = kidsRepository;
}
}
KidsService. java
@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);
}
}