【问题标题】:many to many relationship with nullpoint exception in spring data jpaspring data jpa中与空指针异常的多对多关系
【发布时间】:2020-03-18 20:03:57
【问题描述】:

这是我的文件类

@Entity
@Table(name = "file")
public class File{

public File() {
 }
public File(String file_id,String file_path,Date start_time,Date end_time) {

         this.file_id=file_id;
         this.file_path=file_path;
         this.start_time=start_time;
         this.end_time=end_time;
         }
@Id
private String file_id;
private String file_path;
private Date start_time;//time
private Date end_time;//time
@JsonBackReference(value = "MainScheduleHasFile-File")
@OneToMany(mappedBy = "file",cascade = {CascadeType.ALL})
                private Set<MainScheduleHasFile> mainScheduleHasFiles = new HashSet<>();

    //getters and setters and other attributes 

这是我的 mainSchedule 类

@Entity
@Table(name = "main_schedule")
public class MainSchedule{

public MainSchedule() {

}
public MainSchedule(String scheduleId,double version) {
        this.scheduleId=scheduleId;
        this.version=version;

    }
@Id
private String scheduleId;
private double version;

@JsonBackReference(value = "MainScheduleHasFile-MainSchedule")
@OneToMany(mappedBy = "mainSchedule",cascade = { CascadeType.ALL  })
private Set<MainScheduleHasFile> mainScheduleHasFile;

//getters and setters and other attributes

我的 mainSchedulePlayFile 类

@Entity
@Table(name = "main_schedule_play_file")
public class MainSchedulePlayFile implements Serializable{

public MainSchedulePlayFile() {

}

public MainSchedulePlayFile(MainSchedule mainSchedule, File file) {
            this.mainSchedule=mainSchedule;
            this.file=file;
        }


@Id
@ManyToOne
@JoinColumn(name = "schedule_id")
private MainSchedule mainSchedule;

@Id
@ManyToOne
@JoinColumn(name = "file_id")
private  File file;
private Integer playPoint;

//getters and setters and other attributes 

数据插入逻辑

MainSchedulePlayFile mSchFile=new MainSchedulePlayFile();
Set<MainSchedulePlayFile> set=new HashSet<>();
MainSchedule m=mainScheduleRepo.findById(mid).get();
mSchFile.setMainSchedule(m);
mSchFile.setFile(fileRepo.findById(fid).get());
mSchFile.setPlayPoint(1);

set.add(mSchFile);
m.setMainSchedulePlayFile(set);
mainScheduleRepo.save(m);

这是错误。

20-03-19 Thu 00:39:53.532 DEBUG SQL select mainschedu0_.schedule_id as schedule2_4_0_, mainschedu0_.file_id as file_id3_4_0_, mainschedu0_.play_point as play_poi1_4_0_ from main_schedule_has_file mainschedu0_ where mainschedu0_.schedule_id=? and mainschedu0_.file_id=?
Hibernate: select mainschedu0_.schedule_id as schedule2_4_0_, mainschedu0_.file_id as file_id3_4_0_, mainschedu0_.play_point as play_poi1_4_0_ from main_schedule_has_file mainschedu0_ where mainschedu0_.schedule_id=? and mainschedu0_.file_id=?
20-03-19 Thu 00:39:53.533 TRACE BasicBinder binding parameter [1] as [VARCHAR] - [s001]
20-03-19 Thu 00:39:53.534 TRACE BasicBinder binding parameter [2] as [VARCHAR] - [f001]
20-03-19 Thu 00:39:53.598 DEBUG SQL insert into main_schedule_has_file (play_point, schedule_id, file_id) values (?, ?, ?)
 Hibernate: insert into main_schedule_has_file (play_point, schedule_id, file_id) values (?, ?, ?)
 20-03-19 Thu 00:39:53.604 TRACE BasicBinder binding parameter [1] as [INTEGER] - [1]
20-03-19 Thu 00:39:53.605 TRACE BasicBinder binding parameter [2] as [VARCHAR] - [null]
20-03-19 Thu 00:39:53.606 TRACE BasicBinder binding parameter [3] as [VARCHAR] - [null]
20-03-19 Thu 00:39:53.639 WARN  SqlExceptionHelper SQL Error: 1048, SQLState: 23000
20-03-19 Thu 00:39:53.639 ERROR SqlExceptionHelper Column 'schedule_id' cannot be null
20-03-19 Thu 00:39:53.670 ERROR [dispatcherServlet] Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement] with root cause
java.sql.SQLIntegrityConstraintViolationException: Column 'schedule_id' cannot be null

当我尝试将数据添加到多对多关系时,出现此错误 向上。如何解决这个问题?我试图在中添加带有额外列的数据 关系表但是如果有人可以解决这个错误就会出现 请帮帮我!!!

【问题讨论】:

    标签: java hibernate spring-boot spring-data-jpa


    【解决方案1】:

    我已经解决了。 数据插入逻辑应该是。

    MainSchedulePlayFile mSchFile=new MainSchedulePlayFile(); MainSchedule
    m=mainScheduleRepo.findById(mid).get(); 
    
    mSchFile.setMainSchedule(m);
    mSchFile.setFile(fileRepo.findById(fid).get());
    mSchFile.setPlayPoint(1);
    
    m.getMainSchedulePlayFile().add(mSchFile);
    
    fileRepo.save mainScheduleRepo.save(m);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-27
      • 2018-04-14
      • 2018-12-31
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 2017-08-19
      相关资源
      最近更新 更多