сопоставленный объект снова сохранен - ​​проблема - PullRequest
0 голосов
/ 26 мая 2020

всякий раз, когда я использую cartRepository.save (тележка), пользователь снова вставляется в таблицу пользователей? (В корзине есть поле Пользователь).

как не сохранить пользователя снова?

Класс пользователей:

    @Entity
    @Table(name="users")
    public class Users {
        @Id
        @GeneratedValue
        private int id;
        @Column(name="nameofuser")
        //@UniqueElements
        private String nameofuser;
        @Column(name="password")
        private String password;

        @OneToOne(mappedBy="user",cascade = {CascadeType.ALL})
        Cart cart;

        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getNameofuser() {
            return nameofuser;
        }
        public void setNameofuser(String nameofuser) {
            this.nameofuser = nameofuser;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }

    }

Сущность корзины:

    @Entity
    @Table(name="cart")
    public class Cart {

        @Id
        @GeneratedValue
        @Column(name="id")
        int id;
        @OneToOne(cascade = CascadeType.ALL)
        Users user;



        public Users getUser() {
            return user;
        }
        public void setUser(Users user) {
            this.user = user;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }


    }

Класс CartService:


    package com.praful.lastTry.Services;

    import javax.transaction.Transactional;

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;

    import com.praful.lastTry.MenuRepository.CartRepository;
    import com.praful.lastTry.Models.Cart;
    import com.praful.lastTry.Models.Users;

    @Service 
    public class CartService {
        @Autowired CartRepository cartRepository; 

        public void bindingWithUser(Users user) {
            Cart cart=new Cart();
            Users user1=new Users();
            cart.setUser(user1);
            System.out.println(" from here==================================");
            cartRepository.save(cart);
            System.out.println("till here ==================================");
        }
    }

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

всякий раз, когда я использую cartRepository.save (корзина), пользователь снова вставляется в таблицу пользователей

Из-за этого кода:

 Users user1=new Users();

Каждый раз, когда вы отправка нового пользователя.

Измените на что-нибудь:

  public void bindingWithUser(Users user) {
            Cart cart=new Cart();
            Users user1=  getUser();
            cart.setUser(user1);
            System.out.println(" from here==================================");
            cartRepository.save(cart);
            System.out.println("till here ==================================");
        }

private Users getUser(){
   //return logged in user or your logic to get user which is already there in Database

}
0 голосов
/ 26 мая 2020

Похоже, что в вашей функции bindingWithUser вы передаете объект User user, но внутри функции вы инициализируете новый User объект user1 и устанавливаете его как объект cart перед сохранением это

...