Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
为什么可以’;ti使用Spring数据Jdbc和xFF1F插入一个实体两次;_Spring_Insert_Spring Data Jdbc - Fatal编程技术网

为什么可以’;ti使用Spring数据Jdbc和xFF1F插入一个实体两次;

为什么可以’;ti使用Spring数据Jdbc和xFF1F插入一个实体两次;,spring,insert,spring-data-jdbc,Spring,Insert,Spring Data Jdbc,我的实体: @Table("user") public class User { @Id private Long user_id; private String username; private String password; public User(String username, String password) { this.username = username; this.passwo

我的实体:

@Table("user")
public class User {

    @Id
    private Long user_id;
    private String username;
    private String password;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public User() {
    }

    public Long getUser_id() {
        return user_id;
    }

    public void setUser_id(Long user_id) {
        this.user_id = user_id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

我的存储库:

public interface UserRepository extends CrudRepository<User, Long> {

    @Query("select * from user where username = :username")
    User findByUsername(@Param("username") String username);
}

如果我执行“userRepository.save(userForRegister)”行,我将在第一次成功插入一个实体

但是,如果我想插入另一个用户名不同的用户实体,我会得到一个错误:

2021-01-08 21:37:38.242  INFO 11180 --- [nio-8080-exec-8] c.k.centre.controller.UserController     : Failed to execute DbAction.InsertRoot(entity=com.***.***.Entity.User@65bc9ea1, generatedId=null)
我可以插入它,直到删除用户表的所有数据。
我有什么遗漏吗?

我认为GenerateValue可以解决这个问题

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Long user_id;
另外,我认为应该使用@Column注释将ther字段映射到数据库列

@Column(name = "user_id")
private Long user_id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;

尝试将
@GeneratedValue(strategy=GenerationType.IDENTITY)
添加到您的
用户id
。这会告诉Hibernate id是由数据库生成的。您已将数据库主键配置为自动增量列。再看看。

他们有不同的用户名吗?您得到的堆栈跟踪是什么?旁注:我建议对名称坚持java约定,其中包括:属性和字段没有下划线。是的!它们有不同的名称。似乎我解决了它~只需添加@Column(“userId”)的注释spring jdbc似乎没有@GeneratedValue的注释。它是javax.persistence package的一部分我应该添加什么依赖性?似乎我解决了它~只是添加了@Column(“userId”)的注释。我很困惑,为什么我第一次可以插入一个。spring jdbc似乎没有@GeneratedValue的注释。它应该是spring数据包的一部分。我想你应该看看为什么不能使用注释。以您最喜欢的依赖关系分析器(IntellijMaven帮助器非常好)为例,查看Java持久性api的依赖关系树。它应该在spring数据下的某个地方。似乎我解决了它~只是添加了@Column(“userId”)的注释。我很困惑,为什么我第一次可以插入一个。我也有点困惑。这是不可能的。也许你会在某个时候手动设置你的id。没有exmaple是很难进一步研究的。这个注释不是Spring数据JDBC的一部分,你把它和Spring数据JPA或者实际上是JPA混淆了。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Long user_id;
@Column(name = "user_id")
private Long user_id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;