W projekcie mam klasę Transaction, która wygląda mniej więcej tak:
public class Transaction {
private int id;
private String name;
private long price;
private Category category;
@ManyToOne
@JoinColumn(name = "category_id")
private Account account;
Klasa account:
public class Account {
int id;
String name;
int balance;
@OneToMany(mappedBy="accounts")
private Set<Transaction> transactions;
W TransactionDAO mam metodę, która zapisuje daną transakcję:
@Override
@Transactional
public void saveOrUpdate(Transaction transaction) {
sessionFactory.getCurrentSession().saveOrUpdate(transaction);
}
Problem polega na tym, że po dodaniu nowej transakcji chcę zmniejszyć stan konta (balance) o wybraną cenę z transakcji. Pomyślałem, że użyję w tym celu aspektów i stworzyłem taką metodę:
@After("execution(* saveTransaction(..)) && args(transaction,..)")
public void method(Transaction transaction) {
System.out.println("Wywoluje metode: " + transaction.getAccount().getName());
}
Niestety zamiast nazwy konta wypisuje null, mimo iż w bazie danych i później w metodzie na wyświetlanie wszystko jest poprawnie połączone. Jeśli spytam o transaction.getName() wyświetla poprawnie. Coś robię źle?