我目前正在开发一个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
1条答案
按热度按时间j2cgzkjk1#
当您在字符串上使用@id时,您必须指定生成类型,否则它将从数据库中获取默认的自动增量int。这就是为什么会出现错误。
您必须为字符串属性定义自己的自定义生成器。