Как я могу установить сопоставление с аннотациями, чтобы получить меньше запросов, чем сейчас? - PullRequest
1 голос
/ 27 января 2012

Как я могу установить сопоставление с аннотациями, чтобы получать меньше запросов, чем сейчас?Мне нужно только чтение данных.

...
private Long id;
private String firstName;
private String lastName;
private Address address;
private Set<Office> offices = new HashSet<Office>();
private Map<Office, Position> positions = new HashMap<Office, Position>();
private Office office;
    ...
    @OneToOne
    @JoinColumn(name = "ADDRESS_ID")
    public Address getAddress() {
        return address;
    }

    @ManyToMany(fetch = FetchType.EAGER, targetEntity = Office.class)
    @JoinTable(name = "H_OFFICE_EMPLOYEE",
        joinColumns = {@JoinColumn(name = "EMPLOYEE_ID")},
        inverseJoinColumns = {@JoinColumn(name = "OFFICE_ID")})
    public Set getOffices() {
        return offices;
    }

    @ManyToMany(targetEntity = Position.class)
    @JoinTable(name = "H_OFFICE_EMPLOYEE",
        joinColumns = {@JoinColumn(name = "EMPLOYEE_ID")},
        inverseJoinColumns = {@JoinColumn(name = "POSITION_ID")})
    @MapKeyManyToMany(joinColumns = @JoinColumn(name = "OFFICE_ID"), targetEntity = Office.class)
    public Map getPositions() {
        return positions;
    }
    ...

Я получаю следующие запросы в консоли, когда получаю 1 сотрудника (и его адрес, город, страну, компании, в которых он работает, количество сотрудников в каждом офисе (где он работает)):

Hibernate: select employee0_.EMPLOYEE_ID as...
Hibernate: select address0_.ADDRESS_ID as...
Hibernate: select offices0_.EMPLOYEE_ID as...
Hibernate: select positions0_.EMPLOYEE_ID as...
Hibernate: select employees0_.OFFICE_ID as...
Hibernate: select offices0_.EMPLOYEE_ID as...
Hibernate: select employees0_.OFFICE_ID as...
Hibernate: select positions0_.EMPLOYEE_ID as...

Что я должен изменить в своем отображении, чтобы получать меньше запросов?

1 Ответ

1 голос
/ 27 января 2012

Вам необходимо установить тип выборки для присоединения, как описано в документации Hibernate .

...