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

映射多级嵌入集合给出异常

景鸿才
2023-03-14

我有一个实体根

@Entity
public class Root {
    @Id
    String id;

    @ElementCollection
    @CollectionTable
    List<Col> cols ;

集合项“col”本身具有嵌入对象

@Embeddable
public class Col {

    @Embedded
    private Emb emb;

EMB“对象非常简单

@Embeddable
public class Emb {

    String embField;

我希望数据库表是这样的

表:根字段:ID

表:ROOT_COLS字段:ROOT_ID,EMB_FIELD

启动这个spring boot应用程序会给我一个ArrayIndexOutOfBoundsException

如何修复此问题?

hibernate版本:5.0.12

null

共有1个答案

韩景胜
2023-03-14

问题是,实体的默认访问权限是field,但嵌入对象的默认访问权限是Property。

因此Col类应该是

@Embeddable
@Access(AccessType.FIELD)
public class Col {
    @Embedded
    private Emb emb;

和Emb类

@Embeddable
@Access(AccessType.FIELD)
public class Emb {
    String embField;

我会喜欢一个比ArrayIndexOutOfBoundsException更好的错误消息!

 类似资料:
  • 问题内容: Jackson JSON序列化/反序列化此类没有问题: 但是在这一点上: 反序列化时出现此异常: com.fasterxml.jackson.databind.JsonMappingException:没有为类型[简单类型,类test.MyClass $ Nested]找到合适的构造函数:无法从JSON对象实例化(缺少默认构造函数或创建者,或者可能需要添加/启用类型信息?),网址为[S

  • 我想使用Orika library映射一个包含嵌套集合的字段。我在课堂上的领域定义如下: Pojo是一个简单的Pojo类。不幸的是,我有一个MappingException,它是由Orika内部逻辑中的NullPointerException引起的。 我做错事了吗?也许我需要使用自定义映射功能? 编辑: 下面是我的代码: } 公共类源{private final List } 公共类目的地{pri

  • 6.3.1. 有序集合(Sorted collections) Hibernate 支持实现 java.util.SortedMap 和 java.util.SortedSet 的集合。你必须在映射文件中指定一个比较器: <set name="aliases" table="person_aliases" sort="natural">

  • 主要内容:集合类型,以下是纠正/补充内容:集合(Collection)是一个将多个对象分组为一个单元的java框架。它用于存储,检索和操作汇总数据。 在JPA中,可以使用集合来持久化包装类和String的对象。JPA允许三种对象存储在映射集合中 - 基本类型,实体和嵌入式类型。 集合类型 根据要求,我们可以使用不同类型的集合来持久化对象。如下所示 - List Set Map 包中包含集合框架的所有类和接口。 以下是纠正/补充内容: 根据

  • 主要内容:集合映射实例,程序输出结果集合(Set)是一个包含唯一元素的接口。 这些元素不保留任何顺序。当需要以无序方式检索唯一元素时,可以使用。 完整的项目目录结构如下所示 - 集合映射实例 在这个例子中,我们将一个对象嵌入到一个实体类中,并将其定义为一个集合类型 - 。 这个例子包含以下步骤 - 第1步: 在包下创建一个实体类,这个类包含员工, 和嵌入对象(员工地址)。注解 表示嵌入对象。 文件:Employee.java 的代码

  • 你可以定义一个新的名或从下拉式菜单中选择导入到现有的表或集合。 【注意】如果你在“目标表”或“目标集合”输入一个新的名,在“是新的”内的框将会自动显示为“是”。 导入多个表或集合时,所有表或集合会显示在列表中。