java - 如何定义单向OneToMany JPA关系而不需要任何级联?

标签 java jpa

当我试图拯救人时,它并没有拯救任何东西,无论是人还是城市。我不想保存或更新 City 对象。我只想更新/删除 joinColumn。有什么办法可以做到这一点吗?

Person person = new Person();
person.setCities(...);
personDAO.save(person);



public class Person{

    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "city_id")
    private List<City> cities;

}


public class City{
    @Id
    @Column(name = "city_id")
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "org.hibernate.id.UUIDGenerator")
    private String cityId;

}

最佳答案

首先在 City 端定义 @ManyToOne 映射:

@ManyToOne
@JoinColumn(name = "person_id")
private Person person;

然后添加mappedBy属性并删除@JoinColumn:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "person")
private List<City> cities;

当您保存/更新时,您必须设置依赖项两侧的实体:

Person person = new Person();
person.setCities(...);

for(City city: cities){
   city.setPerson(person);
}  

personDAO.save(person);

删除也是如此。您必须删除两侧的实体引用。

关于java - 如何定义单向OneToMany JPA关系而不需要任何级联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43046004/

相关文章:

java - JPA 实体未正确更新

java - Do while 循环比较字符串

java - 如何解决java中Set<Path>的Hibernate映射异常?

java swing 对齐单选按钮

java - java文件中的其他方法是否可以在Android Studio的onCreate方法中调用?

java - @PersistenceUnit 注释不会创建 EntityManageFactory emf=null

java - DFS 算法 - 8-Puzzle 或 nXn-Game

jpa - 在嵌入类型中将 @OneToOne 与 Cascade.DELETE 一起使用

java - 使用生成的 Id 安全地持久保存新 JPA 实体的最佳实践

jpa - Micronaut CRUD 操作与实体管理器不适用于具有外键的表