使用默认的spring-security用户和hibernate的对象需要自定义用户实现

时间:2015-01-29 14:00:41

标签: hibernate spring-mvc spring-security

我有一个基本的弹簧安全登录/注销设置工作, 我有一个对象MyObject,它有一个属性created_by,其中包含创建该对象的用户的user_id。我还得到了REST调用,以便我将当前正在调用list函数的用户的对象作为属性。

我现在想要做的是过滤user_id创建的对象。对于hibernate来说,我认为我必须在对象created_by属性中定义User,因为hibernate与实体一起工作。

e.g:

public class MyObject implements Serializable {
    ...
    @Column(name = "created_by")
    org.springframework.security.core.userdetails.User created_by; 
    ... 
}

但是当我现在列出我得到的所有MyObject对象时:

 org.hibernate.type.SerializationException: could not deserialize

我尝试在created_by成员上使用@OneToMany,但后来我得到了:

 MyObject.created_by references an unknown entity: org.springframework.security.core.userdetails.User

由于它在没有用户输入的情况下工作,因此用户对象的序列化应该存在一些问题。我重新确定了其他对象的serial_ID,但问题仍然存在。有没有我错过或不可能的东西,我需要实现一个自定义用户来做我想要的。

1 个答案:

答案 0 :(得分:0)

Spring Security没有任何JPA支持,因此如果您想要查询用户属性,则必须使用自己的用户实体。如果您只需要查询用户名,则可以执行以下快捷方式:

@Column
private String created_by;