当前位置: 首页 > 知识库问答 >
问题:

Spring Boot

慕承允
2023-03-14

当我试图使用POST REST API持久化数据时,我得到了。ConstraintViolationException。

由:org.PostgreSQL.util.psqlException引起:错误:列“id”中的null值违反了not-null约束细节:失败的行包含(null,John Doe,How are you?,I'm fine)。

谢了!

            {   
                "personName": "John Doe",
                "question": "How are you?",
                "response": "I am fine"
            }
            CREATE TABLE questionnaries( 
            id BIGINT PRIMARY KEY,
            personName VARCHAR(255) NOT NULL,
            question VARCHAR(255) NOT NULL,
            response VARCHAR(255) NOT NULL
            );
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

@Entity
@Table(name = "questionnaries")
public class Questionnarie {



    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;


    @Column(name = "personname")
    @NotNull
    private String personname;


    @Column(name = "question")
    @NotNull
    private String question;

    @Column(name = "response")
    @NotNull
    private String response;

    public Questionnarie() {}

    public Questionnarie(@NotNull String personname, @NotNull String question, @NotNull String response) {
        super();
        this.personname = personname;
        this.question = question;
        this.response = response;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getPersonname() {
        return personname;
    }

    public void setPersonname(String personname) {
        this.personname = personname;
    }

    public String getQuestion() {
        return question;
    }

    public void setQuestion(String question) {
        this.question = question;
    }

    public String getResponse() {
        return response;
    }

    public void setResponse(String response) {
        this.response = response;
    }}
# ===============================
# = DATA SOURCE
# ===============================
# Set here configurations for the database connection

spring.datasource.jndi-name=java:jboss/datasources/test_data_source

# ===============================
# = JPA / HIBERNATE
# ===============================
# Show or not log for each sql query
spring.jpa.show-sql=true

# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

共有1个答案

傅峰
2023-03-14

这意味着数据库支持主键值的序列。因此,在您的示例中,必须创建一个数据库序列,然后使用@generatedvalue(strategy=generationtype.auto)@generatedvalue(strategy=generationtype.sequence,generator=“seq”)@sequenceGenerate(name=“seq”,sequenceName=“db_seq_name”)为主键字段生成值。

还要确保将SERIAL添加到SQL中,使其看起来像:id SERIAL PRIMARY key

有关串行数据类型,请参见PostgreSQL文档。

 类似资料:
  • 问题内容: 我正在尝试为视图创建JPA实体。在数据库层中,表和视图应该相同。 但是,问题开始出现并且有两个方面: 尝试设置正确的注释时。视图没有与之关联的主键,但是如果没有对字段进行适当的注释,则会在运行时引发抛出异常。 Spring Boot 接口定义要求类型为extends ,这避免了由于视图实体上缺少ID 而不能用作替代方法。 与缺少主键的视图进行交互的正确JPA / SpringBoot

  • 问题内容: 我编写了一个测试UsersController的单元测试。UsersControllerTest.findUser工作正常,但不能正常运行UsersControllerTest.insertGetModifyDelete。 在测试日志中,我可以看到POST请求与UsersController的任何方法都不匹配,但是我不明白为什么。您能帮我这个吗? 这是我其余的Java类: 我有2种方法

  • 问题内容: 我正在尝试使用Spring Boot在本地设置DynamoDB。最初,我开始进行设置,并能够通过存储库将其写入/保存到DynamoDB。从那时起,我添加了更多类来构建我的应用程序。现在,当我尝试启动应用程序时,出现以下异常: 我已经广泛搜索了SO和Internet,但是对此没有任何有用的解决方案。该错误消息也具有误导性。 我的项目属于以下层次结构 DynamoDBConfig.java

  • 问题内容: 我必须实例化一个类,该类使用@class中的信息从JSON扩展了抽象类,如下所示。 在这里,抽象类是动物,而狗则扩展了动物类。因此,使用@class中的信息,我们可以直接实例化dog吗。这也是我在restTemplate中得到的响应 执行此行时,将出现以下错误。由于POJO类是自动生成的,因此我无法使用 @JsonTypeInfo之 类的 注释 我正在使用Spring Boot和Mav

  • 本文向大家介绍SpringBoot 并发登录人数控制的实现方法,包括了SpringBoot 并发登录人数控制的实现方法的使用技巧和注意事项,需要的朋友参考一下 通常系统都会限制同一个账号的登录人数,多人登录要么限制后者登录,要么踢出前者,Spring Security 提供了这样的功能,本文讲解一下在没有使用Security的时候如何手动实现这个功能 demo 技术选型 SpringBoot JW

  • 问题内容: 我的应用程序中已有一个父子关系,但由于我们在父子的主键中都添加了“类型”列,因此该关系最近变得更加复杂。在此之后,添加,阅读和修改儿童效果很好,但是删除它们很痛苦。 使用Vlad Mihalcea在本文中针对@OneToMany关系给出的建议以及组合键上的各种示例,我尝试了一种类似于以下模型的实现。但是,删除孩子仍然无法正常工作,现在我得到了一个奇怪的错误消息作为奖励。 我正在使用Sp

  • 问题内容: 注意:这旨在作为常见问题的规范答案。 我有一个带有字段()的Spring 类(),但是该字段是我尝试使用它时所用的。日志显示同时创建了bean和bean,但是每当尝试在服务bean上调用方法时,我都会得到一个。Spring为什么不自动接线该领域? 控制器类: 服务等级: 应该自动连接的服务bean,但不是: 当我尝试时,出现以下异常: 问题答案: 带注释的字段是因为Spring不知道您

  • 问题内容: 我看到很多帖子,其中Eager fetch在休眠状态下执行子表父表的左连接。但是当我使用springboot时,hibernate会触发单独的sql查询- 意味着一个针对父表的选择查询和一个针对子表的选择查询。为什么有区别?springboot是否进行了升级,或者我做错了什么? 以下是我正在使用的实体: 订单实体: 客户实体: 控制器: 仓库: 以下是正在执行的查询: 编辑:这与@Fe