Может быть, это глупый вопрос, но это меня беспокоит. Когда я впервые сохраняю сотрудника в базе данных (то есть у него нет назначенного идентификатора), я также хочу, чтобы его связанные транспортные средства сохранялись. < /p>
Это хорошо работает для меня в данный момент, за исключением того, что моя сохраненная транспортная организация не собирается автоматически на карту сотрудника, и в базе данных сотрудник по иностранному ключе в таблице транспортных средств в таблице транспортных средств. Я понимаю, что сотрудника нужно сначала сохранить, а затем спасен автомобиль. Может ли JPA сделать это автоматически для меня? Или мне нужно сделать что -то вроде следующего: < /p>
Vehicle vehicle1 = new Vehicle();
Set vehicles = new HashSet();
vehicles.add(vehicle1);
Employee newEmployee = new Employee("matt");
newEmployee.setVehicles(vehicles);
Employee savedEmployee = employeeDao.persistOrMerge(newEmployee);
vehicle1.setAssociatedEmployee(savedEmployee);
vehicleDao.persistOrMerge(vehicle1);
< /code>
Спасибо! < /p>
Изменить: как запрошено, вот мои сопоставления (без всех других методов и т. Д.) < /p>
@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="employee_id")
private Long id;
@OneToMany(mappedBy="associatedEmployee", cascade=CascadeType.ALL)
private Set vehicles;
...
}
@Entity
public class Vehicle {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="vehicle_id")
private Long id;
@ManyToOne
@JoinColumn(name="employee_id")
private Employee associatedEmployee;
...
}
< /code>
Я только что понял, что должен был иметь следующий метод, определенный в классе моего сотрудника: < /p>
public void addVehicle(Vehicle vehicle) {
vehicle.setAssociatedEmployee(this);
vehicles.add(vehicle);
}
< /code>
Теперь код выше будет выглядеть следующим образом: < /p>
Vehicle vehicle1 = new Vehicle();
Employee newEmployee = new Employee("matt");
newEmployee.addVehicle(vehicle1);
Employee savedEmployee = employeeDao.persistOrMerge(newEmployee);
< /code>
Гораздо проще и чище. Спасибо за помощь всем!
Подробнее здесь: https://stackoverflow.com/questions/179 ... lationship