Я знаю, что этот вопрос задавали и отвечали много раз прежде, однако я не видел решения для контекста, в котором у меня есть эта ошибка. У меня есть две коллекции в моем классе сущностей, и когда я пытаюсь добавить к ним объект с помощью метода в классе обслуживания, я сталкиваюсь с ошибкой:
@ Entity publi c класс Account {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "account_id", nullable = false, updatable = false, unique = true)
private long accountId;
@Column(name = "account_no", nullable = false, updatable = false, unique = true)
private String accountNumber;
@Column(name = "account_balance")
private double accountBalance;
@OneToMany(mappedBy = "account", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Stocks> stocksList;
@OneToMany(mappedBy = "account", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Transaction> transactionList;
@ Service publi c класс TransactionServiceImpl реализует TransactionService {
@Autowired
private TransactionDao transDao;
@Autowired
private AccountServiceImpl accountService;
@Autowired
private StockServiceImpl stockService;
@Override
public Transaction findByTransactionId(long transactionId) {
return transDao.findByTransactionId(transactionId);
}
@Override
public Transaction createPurchaseTransaction(Stocks s, Account a, long volume) {
Transaction t = new Transaction();
double balance = a.getAccountBalance();
double totalCost = volume * s.getSharePrice();
if (totalCost > balance){
System.out.println("No Funds");
} else{
t.setPrice(totalCost);
t.setVolume(volume);
double balanceAfterDeduction = balance - totalCost;
long volumeAfterDeduction = s.getVolume() - volume;
a.setAccountBalance(balanceAfterDeduction);
s.setVolume(volumeAfterDeduction);
**a.getStocksList().add(s);
a.getTransactionList().add(t);**
accountService.save(a);
transDao.save(t);
stockService.save(s);
accountService.save(a);
}
return t;
}
Выполнение моего теста для этого метода возвращает следующую ошибку:
InitializationException: не удалось лениво инициализировать коллекцию роли Account.stockList, не удалось инициализировать сеанс прокси-сервера.
Я попытался изменить тип выборки на EAGER для обеих коллекций и пробовал одну как EAGER с другой LAZY. Кажется, ничего не работает.