代码之家  ›  专栏  ›  技术社区  ›  anonymous

通过spring数据jpa中的@Query更新实体内的关联对象

  •  0
  • anonymous  · 技术社区  · 4 年前

    我想通过@Query of spring data JPA更新实体内的关联对象。 有可能这样做吗?

    @Entity
    @Getter
    @Setter
    public class Person{
       
       @Id
       private Long id;
       
       @OneToOne
       @NotNull
       @JoinColumn(name = "address")
       private Address address;
    }
    
    @Entity
    @Getter
    @Setter
    public class Address{
       
       @Id
       private Long id;
       
       private String state;
    }
    

    我在internet上看到的所有示例都指向使用字符串、int、。。。 我正在寻找一种方法来更新查询,以便传递自定义关联对象。

    @Modifying
    @Query("update Person p set p.address =: address)
    void update(@Param(value = "address") Address address)
    

    有可能吗?我试过了 实体管理器 ,则, 保存() 方法,但我正在寻找上述类型的JPQL查询。

    0 回复  |  直到 4 年前
        1
  •  0
  •   pleft    4 年前

    以下内容将更新所有 Person 实体地址。

    @Transactional
    @Modifying
    @Query("update Person p set p.address = :address")
    void update(@Param(value = "address") Address address)
    

    请注意@Transactional注释,并确保 Address address 参数不应该是瞬时的,即应该已经存在于数据库中并从那里获取它

    i、 e。

    Address address = new Address();
    address.setState("blabla");
    Address savedAddress = addressRepository.save(address);
    
    personRepository.update(savedAddress); // use the peristed Address entity here.