JPA - Persistindo um um para muitos relacionamento

Talvez esta seja uma pergunta estúpida, mas está me incomodando.

Eu tenho um bidirecional para muitos relacionamento de empregado para veículos. Quando eu mantenho um funcionário no banco de dados pela primeira vez (ou seja, ele não tem um ID atribuído), também quero que seus veículos associados sejam persistidos.

Isso funciona bem para mim no momento, exceto que minha entidade de veículo salva não está recebendo o funcionário associado mapeado automaticamente e no banco de dados a coluna de chave externa employee_id na tabela veículo é nula.

Minha pergunta é: é possível que o funcionário do veículo persista ao mesmo tempo em que o próprio funcionário está sendo mantido? Eu percebo que o Empregado precisaria ser salvo primeiro, depois o Veículo economizado depois. O JPA pode fazer isso automaticamente para mim? Ou eu tenho que fazer algo como o seguinte:

Vehicle vehicle1 = new Vehicle();
Set<Vehicle> vehicles = new HashSet<Vehicle>();
vehicles.add(vehicle1);

Employee newEmployee = new Employee("matt");
newEmployee.setVehicles(vehicles);
Employee savedEmployee = employeeDao.persistOrMerge(newEmployee);

vehicle1.setAssociatedEmployee(savedEmployee);
vehicleDao.persistOrMerge(vehicle1);

Obrigado!

Edit: Conforme solicitado, aqui estão meus mapeamentos (sem todos os outros métodos, etc.)

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="employee_id")
    private Long id;

    @OneToMany(mappedBy="associatedEmployee", cascade=CascadeType.ALL)
    private Set<Vehicle> 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;

    ...
}

Acabei de perceber que deveria ter o seguinte método definido na minha classe Employee:

public void addVehicle(Vehicle vehicle) {
    vehicle.setAssociatedEmployee(this);
    vehicles.add(vehicle);
}

Agora o código acima ficará assim:

Vehicle vehicle1 = new Vehicle();

Employee newEmployee = new Employee("matt");
newEmployee.addVehicle(vehicle1);
Employee savedEmployee = employeeDao.persistOrMerge(newEmployee);

Muito mais simples e limpo. Obrigado pela vossa ajuda a todos!

questionAnswers(2)

yourAnswerToTheQuestion