使用 Spring Data JDBC 的嵌套数据结构

2024-04-11

我想创建一个嵌套的数据结构。

Entity1包含类型的对象Entity2存储在地图中。Entity2应该包含一个对象的映射Entity3.

第一部分,Entity1 and Entity工作正常。当我添加Entity3,发生异常。

当我执行一个简单的测试时,发生了以下异常:

java.lang.IllegalArgumentException:目标 bean 类型 org.springframework.data.util.Pair 不是持久化类型 实体 (org.hameister.filmwatcher.nested.Entity2)!:org.springframework.data.util.Pair

    package org.hameister.nested;

    import org.springframework.data.annotation.Id;

    import java.util.HashMap;
    import java.util.Map;

    public class Entity1 {
    @Id
    long id;

    String name1;

    Map<String, Entity2> bMap = new HashMap<>();

    public Entity1() {
    }

    public Entity1(String name1) {
        this.name1 = name1;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public  void  addElement(Entity2 entity2) {
        bMap.put(entity2.name2, entity2);
    }

 }

Entity2:

package org.hameister.nested;

import org.springframework.data.annotation.Id;

import java.util.HashMap;
import java.util.Map;

public class Entity2 {
    @Id
    long id;
    String name2;

//    Map<String,Entity3> map = new HashMap<>();

    public Entity2() {
    }

    public Entity2(String name2) {
        this.name2 = name2;
    }

//    public void  addElement(Entity3 entity3) {
//       map.put(entity3.name3, entity3);
//    }

    public void setId(Long id) {
        this.id = id;
    }
}

Entity3:

package org.hameister.nested;

import org.springframework.data.annotation.Id;

public class Entity3 {

    @Id
    long id;
    String name3;

    public Entity3(String name3) {
        this.name3 = name3;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

当我添加另一个类时Entity3应该存储在Entity2在地图中,这不起作用。当我执行一个简单的测试时,发生了以下异常:

java.lang.IllegalArgumentException:org.springframework.data.util.Pair类型的目标bean不是持久实体(org.hameister.filmwatcher.nested.Entity2)的类型!:org.springframework.data.util.Pair

要重现异常,只需删除类中的双斜杠即可Entity2。以及测试中的双斜线NestedTest.

这是测试:

package org.hameister.nested;

import org.hameister.nested.Entity1;
import org.hameister.nested.Entity2;
import org.hameister.nested.Entity3;
import org.hameister.nested.Repository1;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.jdbc.DataJdbcTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@DataJdbcTest
public class NestedTest {

    @Autowired
    Repository1 repository1;

    @Test
    public void testA() {

        Entity1 entity1 = new Entity1("Entity1");
        Entity2 entity2 = new Entity2("Entity2");
        Entity3 entity3 = new Entity3("Entity3");
        entity1.addElement(entity2);
     //   entity2.addElement(entity3);
        repository1.save(entity1);


    }
}

完整的源码可以找到here https://github.com/hameister/SpringDataJdbcExample.


要从评论和问题跟踪器收集信息:

这在当时是一个错误,但自 1.1.4 版本以来已修复。

我任何人在当前版本中仍然看到此内容,请创建一个票证。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring Data JDBC 的嵌套数据结构 的相关文章

  • javascript中的地理空间查询[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 javascript 库 它可以让我进行地理空间查询 我知道 OpenLayers 和
  • codeigniter、result() 与 result_array()

    我都用result and result array 通常我喜欢将结果作为数组 这就是我主要使用 result array 的原因 但我想知道我应该遵循哪种更好的方法 就性能而言 其中哪一个使用起来更有效 这是我在 codeigniter
  • 如何使用VBA保存分号分隔的csv文件?

    我将数据复制到电子表格中 使用 VBA 对其进行格式化 然后将该工作表保存到 CSV 文件中 我使用以下代码 ws SaveAs Filename filestr Fileformat xlCSV ws 是我保存的工作表 这给了我一个以逗号
  • 在 Symfony2 中将多对多关系保存到数据库

    在我的 Symfony2 项目中 我有两个相关的实体 用户和收藏夹 他们之间是多对多的关系 我的应用程序的工作原理如下 在我的 Twig 页面中 我有一些带有 添加到收藏夹 按钮的项目 当您单击该按钮时 我的控制器会将 item id 保存
  • 无法播放 AVAudioPlayer 中文档中的文件

    我在应用程序的文档文件夹中有一个文件 我想播放它 if NSFileManager defaultManager fileExistsAtPath pathString let url NSURL fileURLWithPath pathS
  • Mac OSX 中的 eclipse 中凭证存储失败

    当我使用 mac 中的 eclipse 和我的凭据连接到 tfs 中的服务器项目时 它的连接没有任何问题 但是当我在登录对话框中检查 保存密码 时 它显示错误 凭据存储失败 无法保存您的凭据 有什么办法可以摆脱这个 因为我不想每次打开 ec
  • LibGDX 文本字段输入导致崩溃

    所以我试图制作一个登录屏幕 现在的问题是 当我在文本字段中输入文本时 我的游戏崩溃了 这是我的主菜单类 import com badlogic gdx Gdx import com badlogic gdx Screen import co

随机推荐