Внешний ключ не сохраняется в дочерней таблице в отношении «один ко многим» - PullRequest
0 голосов
/ 23 марта 2019

Я занимаюсь разработкой приложения REST API с использованием весенней загрузки и столкнулся с отображением «Один ко многим» при использовании свойства mappedBy. У меня есть класс User и класс Usermeata, пользователь может иметь более одного usermeta.

Несмотря на то, что программа успешно сохранила чужое при использовании JoinColumn, я хочу знать, какую ошибку я допускаю при использовании mappedby.

Вот мой код:

Класс сущности пользователя:


@Entity
@Table(name="User")
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long userId;

    @Column(unique=true)
    private String username;

    @Column(unique=true)
    private String emailId; 

    private String password;
    private String firstName;
    private String lastName;
    private String phoneNo;
    @OneToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL,mappedBy="user")
//  @JoinColumn(name="user_id")
    private List<UserMeta> userMetaList=new ArrayList();




    public List<UserMeta> getUserMetaList() {
        return userMetaList;
    }

    public void setUserMetaList(List<UserMeta> userMetaList) {
        this.userMetaList = userMetaList;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmailId() {
        return emailId;
    }

    public void setEmailId(String emailId) {
        this.emailId = emailId;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getPhoneNo() {
        return phoneNo;
    }

    public void setPhoneNo(String phoneNo) {
        this.phoneNo = phoneNo;
    }


}

Класс UserMeta:


@Entity
public class UserMeta {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long userMetaId;

    @ManyToOne
    @JoinColumn(name="user_id")
    private User user;

    private String _key;

    private String _value;

    public Long getUserMetaId() {
        return userMetaId;
    }

    public void setUserMetaId(Long userMetaId) {
        this.userMetaId = userMetaId;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String get_key() {
        return _key;
    }

    public void set_key(String _key) {
        this._key = _key;
    }

    public String get_value() {
        return _value;
    }

    public void set_value(String _value) {
        this._value = _value;
    }

}

UserService.class

@Service
public class UserService {

    @Autowired
    private UserRepository  userRepository;

    public User getUser(Long  userId) {
        return userRepository.getOne(userId);
    }

    public List<User> getAllUser() {
        return userRepository.findAll();
    }

    public User addUser(User user) {
        return userRepository.save(user);
    }

    public void removeUser(User user) {
        userRepository.delete(user);
    }

    public void updateUser(User user) {
        userRepository.save(user);
    }
}


POST-запрос:

{
    "username":"myusername",
    "emailId":"myemailid@gmail.com1",
    "password":"2323@123",
    "firstName":"myfname",
    "lastName":"mlname",
    "phoneNo":"000000",
    "userMetaList":[
        {
            "_key":"api_key",
            "_value":"api_key_value"
        },
        {
            "_key":"prop1",
            "_value":"val1"
        }
        ]
}

Теперь таблицы создаются и обновляются со значениями, однако столбец user_id в таблице usermeta всегда равен нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...