我是Java Persistence API和Hibernate的新手.
Java Persistence API FetchType.LAZY和之间的区别是什么FetchType.EAGER?
我正在使用带有JPA(休眠)的spring boot,在我转向spring boot之前我使用Spring数据JPA和hibernate,默认是热切地加载属性值并懒惰地加载集合.
在春季启动JPA以下是默认情况下急切提取的原因?角色将在用户内部返回,但它们应为null
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;
Run Code Online (Sandbox Code Playgroud)
这就是我遵循的例子https://medium.com/@gustavo.ponce.ch/spring-boot-spring-mvc-spring-security-mysql-a5d8545d837d
我编辑的application.properties如下:
# ===============================
# = JPA / HIBERNATE
# ===============================
spring.jpa.show-sql = true
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
# ==============================================================
# = Spring Security / Queries for AuthenticationManagerBuilder
# ==============================================================
spring.queries.users-query=select email, password, active from user where email=?
spring.queries.roles-query=select u.email, r.role from user u inner join user_role ur on(u.id=ur.user_id) inner join role r on(ur.role_id=r.id) …Run Code Online (Sandbox Code Playgroud)