Внешний ключ пуст - PullRequest
       18

Внешний ключ пуст

0 голосов
/ 12 июня 2018

Я пытаюсь установить связь между телефонной книгой и пользователем через jpa, когда текущий вошедший в систему пользователь создает контакт, внешний ключ пользователя в таблице телефонной книги остается нулевым.Я проверил пару вопросов здесь, но у меня это не сработало.

Телефонная книга

@Entity
@Table(name = "Phonebook")
public class Phonebook {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "phonebook_id")
private Long id;

@Column(name = "phone", length = 15, nullable = false)
private String phoneNumber;

@Column(name = "firstname", length = 50, nullable = false)
private String firstName;

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

//getters and setters

Пользователь

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private Long id;

    @Column(name = "email")
    private String email;

    @Column(name = "password")
    @Length(min = 5, message = "*Your password must have at least 5 characters")
    @org.springframework.data.annotation.Transient
    private String password;

    @OneToMany(mappedBy = "user")
    private List<Phonebook> phonebooks;

//getters and setters

Контроллер телефонной книги

    @RequestMapping(value = {"/home/phonebook"}, method = RequestMethod.GET)
        public String showPage(Model model, @RequestParam(defaultValue = "0") int page){
            Authentication auth = SecurityContextHolder.getContext().getAuthentication();
            User user = userService.findUserByEmail(auth.getName());
            model.addAttribute("data",phonebookRepository.findAllByUserId(user.getId(),PageRequest.of(page,10)));
            model.addAttribute("currentPage",page);
            return "/home/phonebook";
        }

    @PostMapping("/home/phonebook/save")
        public String save (Phonebook p){
            phonebookRepository.save(p);

            return "redirect:/home/phonebook";
        }

Репозиторий телефонной книги

@Repository("phonebookRepository")
public interface PhonebookRepository extends JpaRepository<Phonebook,Integer> {
    List<Phonebook> findAllByUserId(Long id, Pageable pageable);
}

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Вы должны сохранить PhoneBook вместе с вашим User.

User u = new User();
// Set properties for your User...
PhoneBook p = new PhoneBook();
// Set properties for your phonebook...
// Store phone book to user:
u.setPhoneBook(Collections.singletonList(p));
userRepository.save(p);
0 голосов
/ 12 июня 2018

Что нужно сделать, сначала создайте объект пользователя и установите идентификатор, а затем сохраните телефонную книгу.

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