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

带参数的java Spring Boot实体构造函数不执行

柳正志
2023-03-14

我不明白为什么一个实体没有参数的构造函数被调用时,提供一个请求体?如果我删除它和唯一存在的构造函数是一个接收参数,我得到预期的输出打印,但我必须实现一个没有参数的构造函数,以保存在数据库中的实体。

{
"str": "stringgg",
"intt": 2,
"doublee": 1.003
}

以下是路径:注释空构造函数时,新实例的值与请求json体匹配

@PostMapping("/save")
public List<Modell> obj(@RequestBody Modell model) {
    modelRepository.save(model);
    System.out.println(model.toString());
    return modelRepository.findAll();
}

这是实体类:

@Table(name = "modelltbl")
@Entity
public class Modell {
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id", nullable = false)
    private long id;

    @Column(name = "str", nullable = true)
    private String str;

    @Column(name = "intt", nullable = true)
    private int intt;

    @Column(name = "doublee", nullable = true)
    private double doublee;

    public Modell(String str, int intt, double doublee)
    {
        this.str = str;
        this.intt = intt;
        this.doublee = doublee;
    }
    public Modell(){}


    @Override
    public String toString()
    {
        return String.format("model class,params: %s , %o , %f ", str , intt, doublee);
    }
}

共有1个答案

黄弘盛
2023-03-14

首先:不要使用iat控制器级别的实体。这是糟糕的应用程序设计。

json将通过jackson库进行转换,jackson库通过调用默认构造函数和属性设置器来创建对象。如果不希望出现这种行为,可以使用@JsonCreator注释。

@JsonCreator
public Modell(@JsonProperty("str")String str, @JsonProperty("intt")int intt, @JsonProperty("doublee")double doublee)
{
    this.str = str;
    this.intt = intt;
    this.doublee = doublee;
}
 类似资料:
  • 我有以下代码: 我不希望字段ui有一个getter,但是kotlin在默认情况下会生成它,因为它是构造函数中定义的val。 在properties and fields文档中,我发现我可以用以下代码生成一个私有getter 但我在构造函数定义中找不到这样做的方法

  • 我使用的是jdk8,需要创建一个以类名作为构造函数参数的Spring组件。但是,使用我当前的代码,我遇到了运行时错误: 这是我的博客类: 这就是我尝试创建类的方式: 我可以了解一下创建该组件的正确方法/这里出了什么问题吗?提前感谢。

  • 问题内容: 运行以下代码时出现错误: 输出为: 有什么问题? 问题答案: 该方法应命名为构造函数,而不是。(请注意双下划线。) 如果使用单个下划线,则只需创建一个名为的方法,然后获取一个不带参数的默认构造函数。

  • 问题内容: 我想在 Spring Java配置中 创建一个Spring bean,并在运行时传递一些构造函数参数。我创建了以下Java配置,其中有一个bean fixedLengthReport ,它在构造函数中需要一些参数。 但是我收到错误消息, 表明 未找到bean 导致 sourceSystem 无法连接。如何使用运行时构造函数参数创建bean? 我正在使用Spring 4.2 问题答案:

  • 对于我的Java应用程序,我尝试使用ScalaCheck编写一些基于属性的单元测试。为此,我需要生成器,但我能找到的所有教程都使用带有参数的构造函数来生成对象。我需要生成的对象没有构造函数参数,我无法添加这样的构造函数,因为它来自外部库。 我现在有以下内容(Jwt声明来自软件包组织.jose4j.jwt): 关于如何编写我的生成器,有什么建议吗?我对Scala一无所知,所以如果我犯了一个“明显”的

  • 我正试图编写一个简单的CRUD程序,我得到了这个错误。这个项目是基于我的项目。不知道我为什么不工作。 如果我注释掉构造函数,错误就会消失。我的房子里什么都没有。 有人能帮我一把吗? 这是我的代码: 实体/食品。JAVA 仓库/FoodRepository.java 控制器/食物控制器。JAVA 主课 波姆。xml