如何为多个实体配置crud存储库?
我有实体Person和Numbe。人有数字,数字有人。
@Entity
public class Person{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(nullable = false)
@OneToMany(mappedBy = "owner",cascade=CascadeType.ALL)
private List<Number> numbers
//getters and setters
}
@Entity
public class Number{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn("owner_id")
private Person owner;
//getters and setters
}
我有界面
@EnableJpaRepositories
public interface personIE extends CrudRepository<Person, Long> {
}
@EnableJpaRepositories
public interface numberIE extends CrudRepository<Number, Long> {
}
现在当我这样做时:
@Autowired
private personIE p_IE;
@Autowired
private numberIE n_IE;
public void test(){
Person p = new Person();
List<Number> numbers = new ArrayList<>();
numbers.add(new Number());
numbers.add(new Number());
p.setNumbers(numbers)
p_IE.save(p);
}
现在,当我想检查保存的内容并检索数据时,我只得到Person。
它的numbers
属性总是设置为[]
。对象存在于数据库中,但它们没有保存在关系中,为什么会这样,我该如何解决?
感谢您的帮助。
答案 0 :(得分:0)
这是一种双向关系。所以你需要从双方设置参考。例如:
public void test() {
Person person = new Person();
Number number1 = new Number();
Number number2 = new Number();
number1.setPerson(person);
number2.setPerson(person);
List<Number> numbers = person.getNumbers();
numbers.add(number1);
numbers.add(number2);
p_IE.save(p);
}