提问者:小点点

Int属性保持为空(Spring引导/Hibernate)


我有一个Spring Boot应用程序,在那里我使用h2,还有一个脚本来创建一个表,我也向它添加值。我遵循了这个教程:https://howtodoinjava.com/spring-boot2/h2-database-example/

java. lang.IllegalArgumentException:不能将int fieldcom.example.movies.model.Movie.rateNum设置为null value at java.base/jdk.内部反射.UnsecFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)~[na:na]at java.base/jdk.内部反射.UnsecFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)~[na:na]

在实体类中,我的属性:

@Column(nullable = true, unique = false)
@JsonProperty
private int rateNum;

然后在schema. sql中

如果存在电影,则删除表;

创建表电影(idINTAUTO_INCREMENT主键,标题VARCHAR(45)NOULL,体裁VARCHAR(45)NOULL,rate DOUBLE NOULL,描述VARCHAR(1000),rateNumINTNOULL);

并且在data. sql中:

SqlNoDataSourceCheck tionForFile

插入电影(标题、流派、速率、描述、速率)价值(《早期人类》、《动作/冒险》、《动画》、《喜剧》,6.4,《早期人类》以时间的黎明为背景,当史前生物和长毛猛犸象漫游地球时,《早期人类》讲述了达格和助手霍格诺布团结部落对抗强大的敌人努特勋爵和他的青铜时代城市拯救家园的故事。,10);

我的存储库类:

`package com.example.movies.model;

import com.fasterxml.jackson.annotation.JsonProperty;

import javax.persistence.*;
import java.util.Objects;

//https://howtodoinjava.com/spring-boot2/h2-database-example/
@Entity
@Table(name = "MOVIE")
public class Movie {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonProperty
    private long id;

    @Column(nullable = false, unique = true)
    @JsonProperty
    private String title;

    @Column(nullable = false, unique = false)
    @JsonProperty
    private String genre;

    @Column(nullable = false, unique = false)
    @JsonProperty
    private double rate;

    @Column(nullable = true, unique = false)
    @JsonProperty
    private String description;

    @Column(nullable = true, unique = false)
    @JsonProperty
    private int rateNum;

    public long getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getGenre() {
        return genre;
    }

    public void setGenre(String genre) {
        this.genre = genre;
    }


    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public double getRate() {
        return rate;
    }

    public void setRate(double rate) {
        this.rate = rate;
    }

    public int getRateNum() {
        return rateNum;
    }

    public void setRateNum(int rateNum) {
        this.rateNum = rateNum;
    }
}

`

我的仓库类

`import com.example.movies.model.Movie;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MovieRepository extends JpaRepository<Movie, Long> {
}`

共2个答案

匿名用户

使用相应的包装类Integer作为原语,例如int不能保存空值。

@Column(nullable = true, unique = false)
@JsonProperty
private Integer rateNum;

匿名用户

解决方案毕竟在这里(令人遗憾的是,一个人不得不花这么多时间进行这样的小调整):为什么我在Grails中使用HibernateCriteriaBuilder时收到“Null值被分配给原始类型setter的属性”错误消息