Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Orika mapping spring';s org.springframework.security.core.GrantedAuthority_Java_Spring_Spring Security_Orika - Fatal编程技术网

Java Orika mapping spring';s org.springframework.security.core.GrantedAuthority

Java Orika mapping spring';s org.springframework.security.core.GrantedAuthority,java,spring,spring-security,orika,Java,Spring,Spring Security,Orika,我很抱歉用这个问题打扰你,但我最终发现了一个愚蠢的人,我想知道我是否用错误的方式来处理这个问题 我想将一个包含org.springframework.security.core.authority.SimpleGrantedAuthority集合的类映射到spring安全类中,这样我就不必急于将ORM加载的类发送到spring安全类中。但它的“role”属性和getter“getAuthority”相关联,也就是说Orika的意思是麻烦。我可以强制Orika使用getter返回的值,将其放入目标

我很抱歉用这个问题打扰你,但我最终发现了一个愚蠢的人,我想知道我是否用错误的方式来处理这个问题

我想将一个包含
org.springframework.security.core.authority.SimpleGrantedAuthority
集合的类映射到spring安全类中,这样我就不必急于将ORM加载的类发送到spring安全类中。但它的“role”属性和getter“getAuthority”相关联,也就是说Orika的意思是麻烦。我可以强制Orika使用getter返回的值,将其放入目标类的setter中吗

如果你足够关心的话,这里有一点关于我问题的背景。 我正在为一个应用程序使用Spring security。我有一个服务,它返回一个
org.springframework.security.core.userdetails.userdetails
,这样spring就可以检查用户是否经过身份验证,是否有权限。我们的UserDetail的实现是一个名为
User
的本地实现。由于此类实现了
org.springframework.security.core.userdetails.userdetails
,因此它具有方法
public Collection我们的用户对象中有这样的角色(扩展了GrantedAuthority)设置:

private Set<Role> roles = new HashSet<Role>();

@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
public Collection<? extends GrantedAuthority> getAuthorities() {
    return roles;
}
private Set roles=new HashSet();
@ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE})

公开募捐嗯,最后,像我这样固执是值得的:)

我解决了这个问题,而不必诉诸任何伎俩。干扰映射的问题是getter返回的集合上的泛型。您将看到,orika似乎无法处理以下映射。。。至少,我不知道

public List<? extends GrantedAuthority> getAuthorities() {
    return this.role;
}

public list为什么不想让getAuthorities()更为迫切?(不具挑战性,但想了解约束)这个想法是为了避免让我们的业务对象超出服务范围。但用户不是超出了服务范围吗?此外,我们的角色与“中心”绑定,因此,用户可以是某个中心的“所有者”,也可以是另一个中心的“用户”。当设置为“急切”时,hibernate检索了几个对象,因为有好几行,但实际上有1行,与许多角色关联。这可能是一个映射问题吗?用户正在超越服务这一事实是我们想要避免的。事实上,它是作为一个用户“facaded”的,非常感谢!我一定要试试。这与我继承的模型有点不同,但重构可能是正确的方法。@coya在运行时添加了一种处理Orika的可能方法,这些方法完全相同。在运行时,所有列表都完全相同,但Orika使用类型对象来收集泛型信息。
private Set<Role> roles = new HashSet<Role>();

@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch=FetchType.EAGER)
public Collection<? extends GrantedAuthority> getAuthorities() {
    return roles;
}
public List<? extends GrantedAuthority> getAuthorities() {
    return this.role;
}
public List<GrantedAuthority> getAuthorities() {
    return this.role;
}