JPA多对一:获取元素

时间:2012-11-05 10:43:31

标签: java jsp servlets many-to-many relationship

我有一个问题,我想用以下示例解释:

JPA班级人员:

    @ManyToMany(mappedBy = "persons")
    private List<Car> cars= new ArrayList<>();

    public void setCars(List<Car> cars) {
        this.cars= cars;
    }

    public List<Car> getCars() {
        return cars;
    } 

问题出现在哪里:

Servlet类:

Person person = genericDao.findOne(1);
request.setAttribute("person", person.getName());

List<Car> cars= new ArrayList<Car>();    
cars= person.getCars();
request.setAttribute("cars", cars);

问题在于,当试图获得汽车时。它们不会自动从数据库中检索并保存在Person类的数组中。如何设置具有多对多关系的JPA类,从中我可以轻松地检索具有关系的对象。

Car.java

IMPORT LEFT OUT!

@Entity
@Table(name = "DSD_Cars")
public class Car extends ModifiableEntity {

    private String name;
    private String description;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @ManyToMany
    @JoinTable(
            name="DSD_Persons_Cars",
            joinColumns = {@JoinColumn(name="IDCar", referencedColumnName = "ID")},
            inverseJoinColumns = {@JoinColumn(name = "IDPerson", referencedColumnName = "ID")}
    )
    private List<Person> persons= new ArrayList<>();

    public void setPersons(List<Person> persons) {
        this.persons= persons;
    }

     public List<Persons> getPersons() {
        return persons;
     }}

1 个答案:

答案 0 :(得分:0)

问题已经解决:

Car类有一个@Table(name =“DSD_Cars”)注释。但是,@ Table使用了错误的导入规则。将@Table类型更改为JPA版本后,一切正常。如果未正确定义@Table,JPA似乎使用类名。这解释了错误。

感谢所有花时间帮助我的人!