У меня есть таблица пользователей, в которой содержатся сведения о пользователе. У меня также есть таблица полномочий, в которой есть роль пользователя. Таблица пользователей и полномочий имеет сопоставление "один ко многим". Когда я пытаюсь сохранить детали с помощью Jpa, столбец внешнего ключа пуст, в это поле не вставляются данные. У меня есть форма, в которой я указываю роль пользователя вместе с другими деталями.
package com.example.StarsProject.Model;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Entity
@Table
@Getter
@Setter
public class Authorities {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String role;
@ManyToOne(cascade = CascadeType.PERSIST,fetch=FetchType.EAGER)
@JoinColumn(name = "users_id", referencedColumnName = "id")
private Users users;
public Authorities(String role){
this.role = role;
}
}
package com.example.StarsProject.Model;
import com.example.StarsProject.DTO.UserDTO;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table
@Getter
@Setter
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "first_name")
private String firstname;
@Column(name = "last_name")
private String lastname;
@Column(unique = true)
private String email;
private String password;
@OneToMany(fetch = FetchType.EAGER,targetEntity = Authorities.class,mappedBy = "users", cascade = CascadeType.PERSIST)
private Set<Authorities> authorities;
public Users(UserDTO userDTO) {
this.email = userDTO.getEmail();
this.firstname = userDTO.getFirstname();
this.lastname = userDTO.getLastname();
this.password = userDTO.getPassword();
// Authorities authorities = new Authorities();
// authorities.setRole(userDTO.getRole());
// Set<Authorities> set = new HashSet<>();
// set.add(authorities);
this.authorities = new HashSet<Authorities>(Arrays.asList(new Authorities(userDTO.getRole())));
}
}
package com.example.StarsProject.Service;
import com.example.StarsProject.DTO.UserDTO;
import com.example.StarsProject.Model.Users;
import com.example.StarsProject.Repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserDetailsServiceImpl implements UserDetailsServiceInterface{
@Autowired
UserRepository userRepository;
@Override
public void storeUserDetails(UserDTO userDTO) {
Users users = new Users(userDTO);
userRepository.save(users);
}
}
Когда я пытаюсь сохранить данные пользователя, он не вставляет никакого значения в столбец внешнего ключа. Может ли кто-нибудь сказать мне, что я делаю не так.