通过 spring 数据 jpa 中的@Query 更新实体内的关联对象
Update associated object inside Entity via @Query in spring data jpa
我想通过 spring 数据 JPA 的@Query 更新实体内的关联对象。
可以这样做吗?
@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 上看到的所有示例都指向使用 String、int 等更新查询
我正在寻找一种更新查询的方法,我可以在其中传递自定义关联对象。
@Modifying
@Query("update Person p set p.address =: address)
void update(@Param(value = "address") Address address)
可能吗?我也尝试过使用 JPA 的 EntityManager、save() 方法,但我正在寻找上述类型的 JPQL 查询。
以下将更新所有 Person
个实体的地址。
@Transactional
@Modifying
@Query("update Person p set p.address = :address")
void update(@Param(value = "address") Address address)
注意 @Transactional 注释并确保 Address address
参数不应该是瞬态的,即应该已经存在于数据库中并从那里获取它
即
Address address = new Address();
address.setState("blabla");
Address savedAddress = addressRepository.save(address);
personRepository.update(savedAddress); // use the peristed Address entity here.
我想通过 spring 数据 JPA 的@Query 更新实体内的关联对象。 可以这样做吗?
@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 上看到的所有示例都指向使用 String、int 等更新查询 我正在寻找一种更新查询的方法,我可以在其中传递自定义关联对象。
@Modifying
@Query("update Person p set p.address =: address)
void update(@Param(value = "address") Address address)
可能吗?我也尝试过使用 JPA 的 EntityManager、save() 方法,但我正在寻找上述类型的 JPQL 查询。
以下将更新所有 Person
个实体的地址。
@Transactional
@Modifying
@Query("update Person p set p.address = :address")
void update(@Param(value = "address") Address address)
注意 @Transactional 注释并确保 Address address
参数不应该是瞬态的,即应该已经存在于数据库中并从那里获取它
即
Address address = new Address();
address.setState("blabla");
Address savedAddress = addressRepository.save(address);
personRepository.update(savedAddress); // use the peristed Address entity here.