Hibernate добавление нового элемента @oneToMany - PullRequest
0 голосов
/ 22 мая 2018

что не так, ребята, у меня есть отношения в спящем режиме @oneToMany:

Это в классе ссуды:

@ManyToOne(cascade=CascadeType.ALL) private users user;

Это в классе пользователя:
@OneToMany(mappedBy="user",fetch=FetchType.LAZY) private Set<loans> loans=new HashSet<loans>(0);

здесь у меня есть метод для вставки нового кредита:

public static void addLoanToUser(Integer userID,String brand,String model,String registration,String loanStart , String loanEnd){
 Session session = HibernateUtil.getSessionFactory().openSession();
      Transaction transaction = null;
    try {   

        transaction = session.beginTransaction();
                    users user = (users) session.load(users.class, userID);
                    Set<loans> loanSet = new HashSet();

                    loans loan = new loans();                        
                    loan.setBrand(brand);
                    loan.setModel(model);
                    loan.setRegistration(registration);
                    loan.setLoanStart(loanStart);
                    loan.setLoanEnd(loanEnd);
                    loan.setPaydone("no");
                    loanSet.add(loan);
                    user.setLoans(loanSet);

                    session.saveOrUpdate(user);
                    session.save(loan);

        session.getTransaction().commit();

    } catch (HibernateException e) {
        transaction.rollback();
        e.printStackTrace();
    } finally {
        session.close();
    }

 }

Когда я вставляю данные в базу данных, всегда есть NULL для внешнего ключа.Я пытался найти что-то в стеке, но ничего не помогло.

1 Ответ

0 голосов
/ 22 мая 2018

Это потому, что вы должны установить отношение к "держателю ключа" в вашем случае, который является loan сущностью.Итак,

users user = (users) session.load(users.class, userID);
loans loan = new loans();  
..... setup
loan.setUser(user)
session.saveOrUpdate(user);

И вы действительно понимаете, что если пользователь получит новый кредит, вы эффективно удаляете другие кредиты этого пользователя (в текущем сеансе), устанавливая новый user.loans набор?:) Желаю, чтобы банковские системы работали так:)

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