0
@Entity
public class Person implements Serializable{

    @Id
    @GeneratedValue
    private int id;
    private String name;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "person")
    private List<Car> cars;

        //getters and setters
}


@Entity
public class Car implements Serializable{
    @Id
    @GeneratedValue
    private int id;
    private String name;

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

        // getters and setters
}

而且..我这样使用它..

       Person per = new Person();
    per.setName("some");

    Car car1 = new Car();
    car1.setName("Ford");

    Car car2 = new Car();
    car2.setName("WagonR");

    //s.save(car1);
    //s.save(car2);
    per.setCars(new ArrayList<Car>());
    per.getCars().add(car1);
    per.getCars().add(car2);

    s.save(per);

现在..表格Car有一个列person_id,但它显示null了两辆车..我在这里做错了什么?表格Person已正确填写。如果我mappedByPerson表中删除“”.. 而是包括@JoinColumn这里...那么它工作正常。

4

2 回答 2

1

尝试调用car.setPerson(per).

于 2013-03-13T15:32:56.420 回答
1

使用您的映射,关系的所有者是 Car 而不是 Person ...这就是为什么在保存 Person 时,不保存 Car 的原因。如果您删除,mappedBy则关系的所有者将成为 Person 并且您将获得预期的行为!

于 2013-03-13T16:32:45.780 回答