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

Spring Data Jpa OneToMany-试图同时保存父对象和子对象时引发异常

喻高寒
2023-03-14

我有一个父表和一个子表,其中父表和子表之间有一对多的关系——当试图保存父数据(也应该保存子数据)时,我得到了一个例外——java。sql。SQLSyntaxerRorexException:ORA-00932:不一致的数据类型:预期日期为二进制

这是我的代码:

@Entity(name ="Parent")
public class Parent {
    @Id
    @Generate.....
    @Column
    private int id;
   
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "parent")
    private List<Child> children = new ArrayList<Child>();

    simple ... getter and setter ...
}  

@Entity(name ="Child")
public class Child{
    @EmbeddedId
    @Column(name = "ID")
    private ChildCompositeIds id;   

    ... simple getter an setter
}  

@Embeddable
public class ChildCompositeIds implements Serializable {

    @Column(name = "child_name")
    private String childName;

    @Column(name = "birth_date",columnDefinition = "DATE")
    private LocalDate birthDate;

    public ChildCompositeIds () {
    }

    public ChildCompositeIds (String childName, LocalDate birthDate) {
        this.childName= childName;
        this.birthDate= birthDate;
    }
    simple ... getter and setter ...
}  

在保存父数据时,我可以看到“ChildCompositeIds”类中的所有子数据都被正确填充,但我仍然得到了这个异常-java。sql。SQLSyntaxerRorexException:ORA-00932:不一致的数据类型:预期日期为二进制。这与字段“birthDate”有关,因为我怀疑birthDate值(主键之一)会变为null,但不知道为什么-请协助

共有1个答案

田玉韵
2023-03-14

具有级联=级联类型。所有这些都足以将保存操作从父实体级联到子实体。

SQLSyntaxErrorException表示您试图在日期列中保存类型错误的内容。看看你们的实体,我认为生日财产很可能是问题所在。正如@Simon Martinelli在他的评论中所建议的那样,对于初学者,我将从@列的注释中删除。

如果您正确设置了数据库,通常Spring和Hibernate可以毫无问题地转换日期。如果我上面建议的小补丁没有帮助,我们将需要更多信息,特别是关于您的数据库和子实体的表。

 类似资料:
  • 当我读到cascade和inverse时,有人说它们都在做完全不同的事情。级联:在级联中,在一个操作(保存、更新和删除)完成后,它决定是否需要调用其他操作(保存、更新和删除)对其他相互有关系的实体。反向:这用于决定哪一方是管理关系的关系所有者(插入或更新外键列)。 假设我保存有一些孩子的父级。所以当我一方面用inverse="true"cascade="all"设置一对多时,我希望孩子是关系的所有

  • 是否有必要向租户更新房屋的新引用? 编辑:为了澄清,您可以假设实体是在上面的代码之前加载的(因此,处于托管状态)。因为这个“事务”是Spring函数的一部分,所以事务将在它的末尾隐式提交。 编辑二:问题不在于我是否应该在一开始就把房子存起来,以避免这种情况。它是关于更好地理解对象是如何管理的。

  • 我的用户可以在我的服务器上发布一张食物的照片和一个关于食物的帖子。 例如,假设某人看到了好吃的东西,拍了一张照片,然后写上“Tasty!”在照片下面。照片被发送到服务器,消息“Tasty!”包括用户名、日期、位置等,通过一个api调用在一个名为“POST”的对象中发送到我的服务器。 我在我的android端写了以下代码: 请求网络执行过程中发生异常:无法写入请求:找不到请求类型[model.pos

  • 我有一个叫做玩家的模式和另一个叫做游戏的模式。每个游戏都有一个名为玩家的属性,它是对玩家对象的引用数组。 游戏架构 球员模式 MongoDb连接 用于在post路线上初始化游戏和玩家的代码。(我正在使用Express) 在节点控制台的终端上,当我创建5个播放器时,我有以下输出: 新玩家加入 新玩家加入 新玩家加入 新玩家加入 新玩家加入 现在,当我转到mongo控制台并查看玩家集合时,我发现有5个

  • 我对JPA和manytoone的关系感到困惑,我有一个类“Judiction”,它有很多“Judidget”,当我试图将一个Judidge实例存储到postgres db中时,它抛出错误消息如下: 判断类: 还有我的服务课: 在我的数据库中,我有判断表和用户表,我需要为多通关系创建一个作为判断用户的表吗?

  • 问题内容: 我正在向我的朋友解释OOP。我无法回答这个问题。(我有多可耻? 我只是想逃避,因为OOP描绘了现实世界。在现实世界中,父母可以容纳孩子,但孩子不能容纳父母。OOP也是如此。我知道它很愚蠢。:P 为什么此陈述无效? 因为aChild的成员是aParent成员的超集。那为什么孩子不能容纳父母。 问题答案: 正是因为aChild是aParent功能的超集。你可以写: 因为每只狐狸都是动物。但