请原谅我可怕的英语 . 我有项目,它是在Spring Boot Hibernate JPA上编写的 . 我有这个实体关系:
客户类:
@Entity
@Table(name = "clients")
public class Client {
@OneToMany(mappedBy = "client", fetch = FetchType.EAGER)
private List<ClientWallet> wallets;
}
钱包类:
@Entity
@Table(name = "wallets")
public class ClientWallet {
@OneToMany(fetch = FetchType.EAGER, mappedBy = "wallet")
private List<ClientTransaction> transactions;
@ManyToOne
@JoinColumn(name = "client_id")
private Client client;
}
交易类:
@Entity
@Table(name = "transactions")
public class ClientTransaction {
@ManyToOne
@JoinColumn(name = "wallet_id", nullable = false)
private ClientWallet wallet;
}
我为每个实体都有@Repository(扩展CrudRepository)像这样:
@Repository
public interface WalletsRepository extends CrudRepository<ClientWallet, Long> {
ClientWallet findByAnotherField(String anotherFiels);
}
此外,我有后台线程,这个线程通过他的一个字段接收Wallet对象,添加新的Transaction对象和保存对象 . 所有新数据都在物理上出现在数据库中,但在重新授权或重新启动应用程序之前,在我的html页面中看不到 .
如何解决?所有线程需要使用1个会话吗?怎么样?
第二个问题 . 为什么fetsh = LAZY thow LazyInitializationException?我为我的服务类添加了@Transactional注释,但没有任何改变 .
谢谢 .