gpt4 book ai didi

Spring Boot 数据 JPA : Hibernate Session issue

转载 作者:行者123 更新时间:2023-12-05 09:22:55 27 4
gpt4 key购买 nike

我正在开发一个基于 Spring Boot 的 Web 应用程序。我严重依赖 @ComponentScan@EnableAutoConfiguration并且没有明确的 XML 配置。

我有以下问题。我有一个名为 UserSettingsJPA-Annotated Entity 类:

@Entity public class UserSettings {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@OneToMany(cascade = CascadeType.ALL)
private Set<Preference> preferences; // 'Preference' is another @Entity class

public UserSettings() {
this.preferences = new HashSet<Preference>();
}

// some more primitive properties, Getters, Setters...
}

我关注了this教程并创建了一个扩展 JpaRepository<UserSettings,Long> 的存储库接口(interface).

此外,我有一个 UserManager bean :

@Component public class SettingsManager {

@Autowired
UserSettingsRepository settingsRepository;

@PostConstruct
protected void init() {
// 'findGlobalSettings' is a simple custom HQL query
UserSettings globalSettings = this.settingsRepository.findGlobalSettings();
if (globalSettings == null) {
globalSettings = new UserSettings();
this.settingsRepository.saveAndFlush(globalSettings);
}
}

稍后在代码中,我加载了 UserSettings此处创建的对象,再次使用 findGlobalSetttings询问。

问题是:每次我尝试访问 @OneToMany设置对象的属性,我得到以下异常:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role org.example.UserSettings.preferences, could not initialize proxy - no Session

我知道每个 HTTP session 都有自己的 Hibernate session ,如 this question 的已接受答案中所述。 ,但这不适用于我的情况(目前我正在同一个 HTTP session 中对此进行测试),这就是为什么我不知道这个异常来自哪里。

我做错了什么,我怎样才能避免错误?

最佳答案

如果您希望能够访问事务外的映射实体(您似乎正在这样做),您需要将其标记为“急切”连接。即

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)

关于Spring Boot 数据 JPA : Hibernate Session issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24385045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com