Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Spring JPA实体默认构造函数覆盖n-args构造函数_Spring_Jpa_Spring Data Jpa - Fatal编程技术网

Spring JPA实体默认构造函数覆盖n-args构造函数

Spring JPA实体默认构造函数覆盖n-args构造函数,spring,jpa,spring-data-jpa,Spring,Jpa,Spring Data Jpa,如果存在默认构造函数,则无法使用n-args构造函数初始化实体对象。 如果我没有指定默认构造函数,我可以通过POST请求初始化我的对象。但是,由于没有默认构造函数,我无法获取对象。() 这是我的密码: @Entity @Table(name = "result") public class Result { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private long i

如果存在默认构造函数,则无法使用n-args构造函数初始化实体对象。 如果我没有指定默认构造函数,我可以通过POST请求初始化我的对象。但是,由于没有默认构造函数,我无法获取对象。()

这是我的密码:

@Entity
@Table(name = "result")
public class Result {
    
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;
    
    @Column(name="term")
    private String term;
    
    
    @Column(name="hitsPerYear")
    private int[] hitsPerYear;
    
    @Column(name="year_begin")
    private int year_begin;
    
    @Column(name="year_end")
    private int year_end;
    
    public Result() {
        super();
        System.out.println("Default Constructor");
    }
    
    public Result(String term, int year_begin, int year_end, String key) {
        super();
        System.out.println("n-args constructor");
        this.term = "Some String to see if it works";
        this.year_begin = year_begin;
        this.year_end = year_end;
        int[] someTestArr = {1,2,3,4}
        this.hitsPerYear = someTestArr;
    }
        
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getTerm() {
        return term;
    }
    public void setTerm(String term) {
        this.term = term;
    }

    
    public int[] getHitsPerYear() {
        return hitsPerYear;
    }


    public void setHitsPerYear(int[] hitsPerYear) {
        this.hitsPerYear = hitsPerYear;
    }
    
    public int getYear_begin() {
        return year_begin;
    }
    public void setYear_begin(int year_begin) {
        this.year_begin = year_begin;
    }
    public int getYear_end() {
        return year_end;
    }
    public void setYear_end(int year_end) {
        this.year_end = year_end;
    }

    

    
    
}
如果我试图通过POST请求初始化result类型的对象:

   {
        "term":"hello",
        "year_begin":2019,
        "year_end":2020,
        "key":"scraperapiKey"
    }
我得到的答复是:

{
    "id": 3,
    "term": "hello",
    "hitsPerYear": null,
    "year_begin": 2019,
    "year_end": 2020
}

在java控制台上,我可以看到只调用了默认构造函数(sysout)

就我所记得的,在jpa中,通过n-args构造函数初始化总是可能的。是否已更改?

尝试以下操作:

@JsonCreator
public Result(@JsonProperty("term") String term, @JsonProperty("year_begin") int year_begin, @JsonProperty("year_end") int year_end, @JsonProperty("key") String key) {
    this.term = term;
    this.year_begin = year_begin;
    this.year_end = year_end;
    this.key = key;
}
试试这个:

@JsonCreator
public Result(@JsonProperty("term") String term, @JsonProperty("year_begin") int year_begin, @JsonProperty("year_end") int year_end, @JsonProperty("key") String key) {
    this.term = term;
    this.year_begin = year_begin;
    this.year_end = year_end;
    this.key = key;
}

谢谢,这解决了问题!谢谢,这解决了问题!这与Hibernate无关。抱歉,已更新。这与Hibernate无关。抱歉,已更新。