Я использую JPA 2.0 с поставщиком непрерывности EclipseLink и менеджером сущностей Hibernate 4.3.10.Final. У меня есть отношения @ManyToOne между сущностями Employee и Office. Я ввожу нового сотрудника с помощью EntityManagerFactory. Экземпляр сотрудника ссылается на существующий Office.The код работает, но запросы показывают, что он извлекает все столбцы Office вместо officeId. Как я могу точно настроить запросы, чтобы избежать выборки всех столбцов Office при вставке нового сотрудника? Я попытался использовать FetchType.LAZY в @ManyToOne, но он не работает.@ManyToOne извлекает все столбцы таблицы соединений при вставке новой записи
Employee.java
@Entity
public class Employee {
@Id
@SequenceGenerator(name="employeeSequence",allocationSize=1, sequenceName="EMP_SEQ")
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="employeeSequence")
private int empId;
@Column(name="FIRST_NAME")
private String firstName;
@Column(name="LAST_NAME")
private String lastName;
@Column(name="DOB")
private Date dateOfBirth;
private Date hireDate;
@ManyToOne
@JoinColumn(name="location")
private int location;
Office.java
@Entity
public class Office {
@Id
private int officeId;
private String location;
private String address1;
private String address2;
private String city;
private String state;
private String country;
private String zipcode;
код, который создает объект Employee
Employee emp = new Employee();
emp.setFirstName(firstName);
emp.setLastName(lastName);
emp.setDateOfBirth(dob);
emp.setHireDate(hiredate);
Office office = new Office();
office.setOfficeId(officeId);
emp.setLocation(office);
SQL запросов
Hibernate:
select
EMP_SEQ.nextval
from
dual
Hibernate:
select
office_.officeId,
office_.address1 as address2_1_,
office_.address2 as address3_1_,
office_.city as city4_1_,
office_.country as country5_1_,
office_.location as location6_1_,
office_.state as state7_1_,
office_.zipcode as zipcode8_1_
from
Office office_
where
office_.officeId=?
Hibernate:
insert
into
Emp
(DOB, FIRST_NAME, hireDate, LAST_NAME, location, empId)
values (?, ?, ?, ?, ?, ?)
Спасибо Naros. Это работает. –