当前位置: 首页 > 知识库问答 >
问题:

hibernate-null外键在尝试执行插入时

欧阳学真
2023-03-14

当我进行插入时,在traduction(idMot references mot)中的外键为null,在前面发送正确的外键。我最终出现了这个错误:not-null属性引用了一个空值或临时值:com.virtual.expertise.mydico.model.traduction.mot

我想我在我的模型中做错了什么,但仍然不知道是什么。

      @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;
@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;

下面是交易表:

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 */;

下面是我的WebService:(其中idMot在traduction中显示为null)

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

也许有人有解决办法?

共有1个答案

陶炫明
2023-03-14

在多对一映射中也使用级联类型all。

 @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;
 类似资料:
  • 我试图用Hibernate保存一个表。父表与其子表具有一对多关系。父表POJO有其子表POJO的集合。 当我保存父表时,数据也被插入到它的子表中,但它的外键不为NULL。 下面是我的代码:家长: 儿童: Hibernate服务: 我找到了一个解决方案,将我的孩子反向映射到父母,如下所示 但我在想这是否可以避免。我希望还有其他方法,我不需要把我的每个孩子都映射到父母那里。 Kinldy帮助,如果你能

  • 我正在尝试在表a中插入外键(在phpmyadmin中): 将表A添加外键(id_B)引用B(id_B); 但我得到了一个错误: 表A的id_A为主键,表B的id_B为主键。这两个表都使用innoDB作为存储引擎,表A中的id_B列和表B中的id_B列具有相同的类型。 出了什么问题,我该如何解决?

  • 问题内容: 我有两个实体: 我正在尝试通过执行以下操作插入文件(以及随后的标签): 然后,我使用以下命令将文件插入DAO: 在我的日志中,我在“文件”表中看到一个插入,在标签表中看到2个插入,但是,指向我的文件表(file_id)的标签表中的外键为NULL。 我可能做错了什么? 问题答案: 您不是将标签的文件设置为文件,而是将标签的文件设置为文件。请记住,在OOP中,与关系模型相反,您必须设置关系

  • 我需要在同一个表中的某一列中添加外键约束。例如,对于另一个“项目”列,其中的“I”键为“I”,而“u”列的“I”键为“u”。 我更改了我的表并添加了如下约束:ALTER TABLE PROJECT ADD CONSTRAINT FK_DEPENDENCY_PROJECT_ID外键(DEPENDENCY_PROJECT_ID)引用项目(ID); 但是,我的第二个要求是,“dependency\u p

  • 我是PHP和MySQL新手,需要帮助。。。 我似乎不知道如何在数据库的表中自动插入外键。主键作为“id”添加到我的“mem”表中,但我希望将相同的id添加到我的“location”表中的外键中。有人能帮忙吗? 我有两张桌子。。。 “mem table”id、用户名、电子邮件。 “位置表”id、位置、用户id 如何让用户表中的'id'自动插入到这里作为外键? 我使用这个PHP代码插入数据... 当我