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

无法保存“多个”-使用Spring Boot的@OneTo多国实体

宰父涵忍
2023-03-14

我正在使用Spring Boot和MySQL。我按照这个链接设置了所有内容,我能够连接到MySql并读/写数据。但有一个1:n的关系,我无法保存多方面的实体:

    @Entity
    public class OneSideOfRelationship {
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private long oneId;
      private String someText;
      @OneToMany(mappedBy="oneId")
      private List<ManySideOfRelationship> manySide;

      [Constructor / Getter / Setter]
    }

    @Entity
    public class ManySideOfRelationship {
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private long manyId;
      @ManyToOne(targetEntity=OneSideOfRelationship.class)
      @JoinColumn
      private long oneId;
      private String someMoreText;

      [Constructor / Getter / Setter]
    }

    @Transactional
    public interface OneDao extends CrudRepository<OneSideOfRelationship, Long> {}

    @Transactional
    public interface ManyDao extends CrudRepository<ManySideOfRelationship, Long> {}

如果我在控制器中执行此操作:

    [...]
    @Autowired
    @private ManySideOfRelationship manyDao;
    [...]
      ManySideOfRelationship many = new ManySideOfRelationship();
      many.setOneId(1L);
      many.setSomeMoreText("Text");
      manyDao.save(many);
    [...]

我得到了:

    org.springframework.orm.jpa.JpaSystemException: could not get a field value by reflection getter of com.package.database.OneSideOfRelationship.oneId; nested exception is org.hibernate.PropertyAccessException: could not get a field value by reflection getter of com.package.database.OneSideOfRelationship.oneId

从我的申请中删除。属性:

    spring.datasource.url = jdbc:mysql://myurl:myport/mydatabase
    spring.datasource.username = myusername
    spring.datasource.password = mypassword
    spring.jpa.hibernate.ddl-auto = update
    spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

还有一些来自pom的东西。xml

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>

希望有人有主意。

共有1个答案

林博厚
2023-03-14

oneId数据类型必须为OneSideOf关系不长。

  @ManyToOne(targetEntity=OneSideOfRelationship.class)
  @JoinColumn
  private OneSideOfRelationship oneId;
 类似资料:
  • 我在Hibernate状态下使用关系时得到空。这是我的代码用户实体 登录历史实体 要获取登录历史详细信息,请执行以下操作: 我得到一张空名单。请帮忙

  • 我正在学习cakephp,已经做了很多。我问这个问题的唯一原因是cakePHP中的文档可能是错误的。我不能从文档或过去的stackoverflow帖子中看到为什么(子)教师表不保存(父)用户表中id表中的user_id。我得到没有错误,但user_id是0在教师表,所以它不捡起它从用户表。我在两个模型上有一对一的关系。我只是测试保存超过2个模型,我有一个用户和老师。我只是在表单中输入数据,并创建一

  • 我有一个OneTo多项关系,我可以插入记录,但不能删除它们,当我试图删除它时,它会遇到“外键约束失败”错误。我使用级联删除孤儿如下,但不工作还。 父类的成员具有以下getter 成员类的父类具有以下getter 我也使用了下面的注释,但不起作用 我的冬眠依赖如下 我删除信息的代码

  • 嗨,我有一个角色表和一个权限表,它有多对多的关系。我已经创建了下面链接中提到的实体 https://www.baeldung.com/jpa-多对多 角色实体 权限实体 我已经为每个实体创建了JPA存储库,并且正在尝试将权限保存给一个角色。我在表中已经有了一组/列表的权限,我正在尝试将它们映射到某个角色。我正在尝试使用spring JPA存储库执行下面的代码。 在执行我得到的代码时 org.hib

  • 我看过几百个帖子,跟我的不太像:( 请考虑以下情况。 Mysql架构: 请注意,父级之间没有明确的/关键的关系 现在,我只想获取所有具有相同col1值的“子”对象 我尝试过的那种Hibernate实体, 子实体为, 结果:Hibernate错误报告“从“Parent”引用“Child”的外键的列数错误。应为1” 我将其解释为,@JoinColumn只能使用“id”完成 问题: 1) hiberna

  • 当我保存以下实体时,它在另一个对象中复制相同的值: 例如,在我的struts项目(屏幕)中,如果我更改shipmentShipper字段的值,那么Shipment收货人也将使用相同的值进行更新。 实体: 仓库类: JSP中的字段映射(工作正常): 请检查屏幕截图,我将发货人更改为C4并保存。收货人也被选为C4。请注意,两个选择都使用相同的数据列表填充。(客户名单)