hibernate вставляет нулевые значения в поле внешнего ключа с apache -poi - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть 2 простых объекта домена следующим образом .. с Oracle база данных

@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 вставляет нулевые значения в поле внешнего ключа rpfid в моих моделях. AspsortObject. Я пытался изменить каскадные стили, стратегии генерации, но ничего не получалось. Если сделать nullable = false, выдает ошибку. Данные вставляются, но в AspsortObject.rfpid значения null, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 29 апреля 2020

Сначала я сохраню Rfpobject, получу его идентификатор, а затем сохраню AspsortObject.

Я помню, как боролся с этим сам, так как думал, что смогу сохранить одновременно, и hibernate может сделать для меня все, что я все еще считаю возможным, но я не могу вспомнить решение из головы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...