JPA - Сохраняет один ко многим отношениямJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 JPA - Сохраняет один ко многим отношениям

Сообщение Anonymous »

Может быть, это глупый вопрос, но это меня беспокоит. Когда я впервые сохраняю сотрудника в базе данных (то есть у него нет назначенного идентификатора), я также хочу, чтобы его связанные транспортные средства сохранялись. < /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»