前言,我对使用Spring感到很陌生,但我一直在使用它,并且在我去的时候搞清楚它。我使用的是Java Basic Spring。
我有一个问题,我有一个对象,除了许多事物之外,还包含代表游戏玩家的多对一关系。这是一个清单。
使用我们的控制器进行测试显示此List的setter存在问题,特别是:
org.springframework.orm.jpa.JpaSystemException: Exception occurred inside setter of com.pokerface.pokerapi.game.GameState.players; nested exception is org.hibernate.PropertyAccessException: Exception occurred inside setter of com.pokerface.pokerapi.game.GameState.players
public void setPlayers(List<Player> players) {
this.players=new ArrayList<>();
for (Player p:players){
this.players.add(p);
}
}
所以我撤消我的更改以获得基本的setter:
public void setPlayers(List<Player> players) {
this.players=players;
}
但现在我遇到的问题是,这个集合在放入或拔出数据库时,有时会返回异常:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.pokerface.pokerapi.game.GameState.players, could not initialize proxy - no Session
我非常偏离我的元素,所以如果我没有提供适当的信息,我会道歉。应该在这里实施什么样的二传手?它甚至是setter的问题吗?谢谢。
当我在调试中检查它时,如果我检查存储库中的所有存储对象,它们会拉出但玩家声明&#34;无法评估表达式抛出&#39; org.hibernate.LazyInitializationException&#39;
答案 0 :(得分:0)
问题不在于制定者。在我看来,您正在访问@Transactional上下文之外的setter。在这种情况下,从数据库加载包含播放器的对象后,您将无法访问延迟加载的实体。