当我从angular发送post请求时,在spring boot requestfilter程序中,验证jwt令牌时显示错误。
面对问题org.hibernate.lazyInitializationException
:
未能懒惰地初始化角色集合:in.yis.mains.model.opsuserslogin.roles,无法初始化代理-没有会话
import java.util.Date;
import java.util.LinkedHashSet;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.JoinTable;
import javax.persistence.Table;
import javax.persistence.JoinColumn;
import javax.persistence.UniqueConstraint;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@Data
@Entity
@Table(
name="ops_users_login",
uniqueConstraints={@UniqueConstraint(columnNames={"username"})}
)
public class OpsUsersLogin {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private long id;
private String name;
@Column(name="username")
private String username;
private String password;
private String oldPassword;
private String status_flag;
private int wrong_attampts;
@JsonFormat(pattern="yyyy-MM-dd")
private Date created_date;
@JsonFormat(pattern="yyyy-MM-dd")
private Date expiry_date;
private long rights;
private String address;
private String designation;
private long empId;
@JsonFormat(pattern="yyyy-MM-dd")
private Date created_by;
@JsonFormat(pattern="yyyy-MM-dd")
private Date updated_by;
@ManyToMany
@JoinTable(
name = "opsUsersLogin_roles",
joinColumns=@JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns=@JoinColumn(name = "role_id", referencedColumnName = "id"))
private Collection<Role> roles;
}
这描述了您基本上需要什么
org.hibernate.lazyInitializationException
意味着相关实体或实体集合(在本例中为roles
)尚未初始化,因为相关实体的默认获取策略是lazy
。
要解决这个问题,您必须在获取ops_user_login
实体后初始化roles
集合,或者您可以通过查询获取它们,如果您已经使用查询来获取您的实体的话。初始化角色
可以使用hibernate.initialize(entity.getroles())
完成,如果不起作用,也可以调用entity.getroles().size()
作为解决办法。
如果使用查询选择ops_user_login
,则可以执行以下操作:
Query query = session.createQuery(
"from ops_user_login o " +
"join fetch o.roles"
);
或
TypedQuery<OpsUsersLogin> query = entityManager.createQuery("Select o from ops_user_login o join fetch o.roles", OpsUsersLogin.class);
我有下一个错误: 但是当我试图调用这个方法时,我在在上调用时也会出现同样的异常。我已经检查了事务管理器,它配置正确,事务在这一步中存在。此外,我已经检查了大量与此异常相关的stackoverflow的答案,但没有任何有用的。 它的原因是什么?
我有一个应用程序(Spring 4 MVC Hibernate 4 MySQL Maven集成示例使用注释),使用基于注释的配置将Spring与Hibernate集成。 我有这个实体: 和这个: 服务中的这种方法: 在控制器中: 但我得到了这个错误:
错误被抛出在行hibernate.initialize(students)上;或者在下一行,如果没有,在学生集上,标题中有错误。任何帮助(不仅仅是将fetch类型设置为Eager)都将不胜感激。
在我的Spring应用程序中,我实现了一个自定义的身份验证提供商,它使用服务来处理我的登录请求。身份验证提供程序如下: https://github.com/klebermo/webapp_horario_livre/blob/master/src/com/horariolivre/security/CustomAuthenticationProvider.java 我的服务级别是: https:
我在更新Spring Boot应用程序中的一个实体时得到了这个错误。 这是完整的堆栈跟踪
当我试图懒洋洋地读取子实体列表时,我(断断续续地)得到了这个错误。 关于这个错误,我已经浏览了一个关于SO的帖子列表。我所能找到的就是执行EAGER fetch或使用属性。我不想做任何一个,因为他们是反模式。 我使用的是spring-data-jpa。这是一个spring-boot项目。请求来自web层(Rest控制器)