Я извлекаю данные из запроса POST и сохраняю в таблицу UserSubjects. Это было нормально, пока я просто сохранял, и в сущности это было "private Integer subjectId" .
UserSubjects
+-----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+----------------+
| id | int(20) | NO | PRI | NULL | auto_increment |
| subjectId | int(11) | YES | MUL | NULL | |
| userId | int(11) | YES | | NULL | |
+-----------+---------+------+-----+---------+----------------+
UserSubjectsEntity. java
@Entity
@Table(name = "userSubjects")
public class UserSubjects {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Integer id;
@OneToOne
@JoinColumn(name="subjectId", referencedColumnName = "id")
private Subjects subjects;
@Column(name = "userId")
private Integer userId;
public UserSubjects(Integer id, Subjects subjects, Integer userId) {
this.id = id;
this.subjects = subjects;
this.userId = userId;
}
public UserSubjects() {
}
// getters and setters..
Но после того, как я хочу получить данные, которые у меня есть в этой таблице, я столкнулся с проблемой. Я хочу получить не только subjectId , но и все данные, которые соответствуют subjectId в субъектах таблица.
UserSubjectsRepository. java
public interface UserSubjectsRepository extends JpaRepository<UserSubjects, Integer> {
List<UserSubjects> findAllSubjectsByUserId(Integer userId);
}
UserSubjectsService. java
@Service
public class UserSubjectsService {
@Autowired
UserSubjectsRepository userSubjectsRepository;
// Save subjects in UserSubjects repository
public UserSubjects saveUserSubjects(Integer subjectId, Integer userId, UserSubjects userSubjects) {
userSubjects.setSubjectId(subjectId);
userSubjects.setUserId(userId);
return userSubjectsRepository.save(userSubjects);
}
// Get all subjects that have current user
public List<UserSubjects> getAllSubjects(Integer userId) {
return userSubjectsRepository.findAllSubjectsByUserId(userId);
}
}
CourseRegistrationController . java
@RestController
public class CourseRegistrationController {
@Autowired
UserSubjectsService userSubjectsService;
// Post request for adding subjects to userSubject table
@RequestMapping(value = "courses/registration", method = RequestMethod.POST)
public UserSubjects addUserSubjects(@AuthenticationPrincipal MyUserDetails myUserDetails,
@RequestBody UserSubjects userSubjects) {
return userSubjectsService.saveUserSubjects(userSubjects.getSubjectId(), myUserDetails.getId(), userSubjects);
}
// Get all subjects of user
@RequestMapping(value = "courses/show", method = RequestMethod.GET)
public List<UserSubjects> getAllSubjectsOfUser(@AuthenticationPrincipal MyUserDetails myUserDetails) {
return userSubjectsService.getAllSubjects(myUserDetails.getId());
}
}
SubjectsEntity. java
@Entity
@Table(name = "subjects")
public class Subjects {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Integer id;
@Column(name = "title", length = 255)
private String title;
@Column(name = "codeSub", length = 255)
private String codeSub;
@ManyToOne
@JoinColumn(name="facultyId", referencedColumnName = "id")
private Faculty faculty;
@ManyToOne
@JoinColumn(name="departmentId", referencedColumnName = "id")
private Departments departments;
@Column(name = "ects")
private String ects;
@Column(name = "lc")
private String lc;
public Subjects(Integer id, String title, String codeSub, Faculty faculty, Departments departments, String ects, String lc) {
this.id = id;
this.title = title;
this.codeSub = codeSub;
this.faculty = faculty;
this.departments = departments;
this.ects = ects;
this.lc = lc;
}
public Subjects() {
}
// gettters and setters..
POST-запрос от почтальона
{
"subjectId":"2"
}
Есть ли другой способ сохранить в Jpa данные из POST-запроса?