Hibernate - Нулевой внешний ключ при попытке сделать вставку - PullRequest
0 голосов
/ 21 декабря 2018

Когда я делаю вставку, внешний ключ в traduction (idMot ссылается на mot) равен нулю, когда мой фронт отправляет правильный внешний ключ.Я получаю эту ошибку: Свойство not-null ссылается на нулевое или временное значение: com.virtual.expertise.mydico.model.Traduction.mot

Iпредположим, что я делаю что-то не так в своих моделях, но все еще не знаю, что.

Вот модель traduction:

      @Id
            @Column(name = "id")
            @GeneratedValue(strategy = GenerationType.IDENTITY)
            private Long id;

            @Column(name = "langue")
            private String langue;

            @Column(name = "traduction")
            private String traduction;

            @JsonBackReference(value = "mot-traduction")
            @ManyToOne(fetch = FetchType.EAGER)
            @JoinColumn(name = "idMot", nullable = false, insertable = true, 


updatable = false)
        private Mot mot;

        @CreationTimestamp
        @Column(name = "dateCreation")
        private Date dateCreation;

Здесьэто модель mot:

@Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "libelle")
    private String libelle;

    @JsonBackReference(value = "user-mot")
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "idUser", nullable = false, insertable = true, updatable = false)
    private User user;

    /** les traductions. */
    @JsonManagedReference(value = "mot-traduction")
    @OneToMany(mappedBy = "mot", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private Set<Traduction> traductions;

    @CreationTimestamp
    @Column(name = "dateCreation")
    private Date dateCreation;

Вот таблица traduction:

DROP TABLE IF EXISTS `traduction`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `traduction` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `langue` varchar(100) DEFAULT NULL,
  `traduction` varchar(100) DEFAULT NULL,
  `idMot` bigint(20) DEFAULT NULL,
  `dateCreation` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idMot_idx` (`idMot`),
  CONSTRAINT `idMot` FOREIGN KEY (`idMot`) REFERENCES `mot` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

Вот мой веб-сервис: (где в traduction idMot отображается как ноль)

@POST
    @Path("/create")
    public Traduction createTraduction(Traduction traduction) throws Exception {
        return FacadeBackOffice.getInstance().getTraductionService().createTraduction(traduction);
    }

Может у кого-нибудь есть решение?

1 Ответ

0 голосов
/ 21 декабря 2018

Используйте каскадный тип все в вашем сопоставлении много к одному.

 @Id
            @Column(name = "id")
            @GeneratedValue(strategy = GenerationType.IDENTITY)
            private Long id;

            @Column(name = "langue")
            private String langue;

            @Column(name = "traduction")
            private String traduction;

            @JsonBackReference(value = "mot-traduction")
            @ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
            @JoinColumn(name = "idMot", nullable = false, insertable = true, 


updatable = false)
        private Mot mot;

        @CreationTimestamp
        @Column(name = "dateCreation")
        private Date dateCreation;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...