spring security自定义用户详细信息@id问题

zfycwa2u  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(302)

我目前正在开发一个SpringBootAPI,它有SpringSecurity来注册和登录。

@Entity
public class Users{

    @Id
    @Column(name = "userid", unique = true, nullable = false)
    public String userid;

    @Email
    @Column(unique = true, nullable = false)
    public String username;

    @JsonProperty(access = JsonProperty.Access.READ_WRITE)
    private String password;

    @Column(columnDefinition = "boolean default true")
    public boolean enabled;

刀类

@EnableTransactionManagement
public interface UserDao extends JpaRepository<Users, String> {
    public Users findDistinctByUsername(String username);
}

控制器

Users user = userdao.findDistinctByUsername(username);

当我使用username作为@id时,它可以正常工作,但是如果我将userid作为@id使用,我会得到一个错误
错误:org.springframework.orm.jpa.jpasystemexception:通过永久属性[com.example.demo.model.users.username]的反射访问字段[public java.lang.string com.example.demo.model.users#username]:t1ezqkexu41tg;嵌套的异常是org.hibernate.property.access.spi.propertyaccessexception:通过永久属性[com.example.demo.model.users.username]的反射访问字段[public java.lang.string com.example.demo.model.users]时出错“,
T1EZQKEXU41TG:用户ID

j2cgzkjk

j2cgzkjk1#

当您在字符串上使用@id时,您必须指定生成类型,否则它将从数据库中获取默认的自动增量int。这就是为什么会出现错误。

@id
private int id;

您必须为字符串属性定义自己的自定义生成器。

@Id
@GeneratedValue(//add the generation type here)
private Long id;

相关问题