私は双方向の関係を構築しようとしています。私はSpring Boot JPAでSpring Boot 1.5.4.RELEASEを使って私のリポジトリを生成しています。私はお互いに関連付けられている2つのエンティティを保存しようとしますが、動作していません。私は失敗したテストステートメントについてコメントしました。JPA双方向OneToOneが動作しない
マイEntites:
ドライバ:
@Entity
@ToString
@EqualsAndHashCode
public class Driver {
public static final String COLUMN_CAR = "car";
@Id
@GeneratedValue
private long id;
@Getter
@Setter
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = COLUMN_CAR)
private Car car;
}
車:
@Entity
@ToString
@EqualsAndHashCode
public class Car {
@Id
@GeneratedValue
private long id;
@Getter
@Setter
@OneToOne(mappedBy = Driver.COLUMN_CAR)
private Driver driver;
}
私はリポジトリを生成するために、春JPAを使用。
DriverRepository:
@Repository
public interface DriverRepository extends CrudRepository<Driver, Long> { }
CarRepositoryと:
@Repository
public interface CarRepository extends CrudRepository<Car, Long> { }
がテスト:最後の文が失敗した両試験で
@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class StackoverflowTest {
@Autowired
private DriverRepository driverRepository;
@Autowired
private CarRepository carRepository;
@Test
public void test1() {
Driver driver = driverRepository.save(new Driver());
Car car = carRepository.save(new Car());
driver.setCar(car);
driverRepository.save(driver);
/* Success, so the driver got the car */
driverRepository.findAll().forEach(eachDriver -> Assert.assertNotNull(eachDriver.getCar()));
/* Fails, so the car doesnt got the driver */
carRepository.findAll().forEach(eachCar -> Assert.assertNotNull(eachCar.getDriver()));
}
@Test
public void test2() {
Driver driver = driverRepository.save(new Driver());
Car car = carRepository.save(new Car());
car.setDriver(driver);
carRepository.save(car);
/* Success, so the car got the driver */
carRepository.findAll().forEach(eachCar -> Assert.assertNotNull(eachCar.getDriver()));
/* Fails, so the driver doesnt got the car */
driverRepository.findAll().forEach(eachDriver -> Assert.assertNotNull(eachDriver.getCar()));
}
}
。何か案は?アドバイスに感謝します。
あなたが '' User''と ''あなたがそれを持続する方法UserBan''、そしてどのようにあなたが戻ってDBからそれを取り出すの両方を取得/作成するコードを投稿することができますか? – Matt
私のエンティティを変更し、私のリポジトリクラスと私の単体テストを投稿しました。 :)あなたが私を助けることを願っています。 –