我有2个简单的域对象,如下所示。
@Entity
@Table(name="rfpobject")
public class Rfpobject {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String ide;
private String unit;
private String rfpid;
private String requestid;
private String incoming;
@OneToMany(mappedBy = "rfpid",cascade=CascadeType.PERSIST)
private Set<AspsortObject> rfpide;
第二个对象是:
@Entity
@Table(name="aspsortobject")
public class AspsortObject {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "rfpid")
private Rfpobject rfpid;
private String requestid;
private String aspart;
private String aspname;
private String asporganisation;
private String aspsort;
该方法保存在数据库中:
@PostMapping("/upload")
public void addaspsort(@RequestParam("file") MultipartFile file) throws IOException
{
ZipSecureFile.setMinInflateRatio(0);
FileInputStream f = (FileInputStream) file.getInputStream();
XSSFWorkbook workbook = new XSSFWorkbook(f);
XSSFSheet sheet = workbook.getSheetAt(0);
Row row;
for(int i=1; i<=sheet.getLastRowNum(); i++){
row = sheet.getRow(i);
System.out.println("aspsorttt");
AspsortObject aspsort = new AspsortObject();
Rfpobject rfpid = new Rfpobject();
rfpid.setRfpid(row.getCell(0).toString());
aspsort.setRfpid( rfpid);
aspsort.setRequestid(row.getCell(1).toString());
aspsort.setAspart(row.getCell(2).toString());
aspsort.setAspname(row.getCell(3).toString());;
aspsort.setAsporganisation(row.getCell(4).toString());
aspsort.setAspsort(row.getCell(5).toString());
aspr.save(aspsort);
}
}
}
出于某种原因,hibernate在我的模型.AspsortObject中的rpfid的外键字段中插入了空值。我尝试更改级联样式,生成策略,但没有任何效果。使nullable = false引发error。插入数据,但在AspsortObject.rfpid中该值为空,请帮助我
我先保存Rfpobject,获取它的ID,然后保存AspsortObject。
我记得自己为此感到挣扎,因为我认为自己可以同时保存这笔钱,而休眠可以为我做一切,尽管我仍然认为这是可能的,但我不记得从头开始的解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句