Тест интеграции весенней загрузки с H2 и JPA не проходит - PullRequest
0 голосов
/ 21 сентября 2018

Я запускаю интеграционный тест Spring Boot, который сохраняет в базу данных H2 с использованием JPA.Существует 2 основных объекта MyRequest и MyResponse с отношением один к одному - поле типа MyResponse находится в MyRequest, и тест вызывает save () в хранилище, передавая ему объект MyRequest.Почему тест не проходит с этим исключением?- org.hibernate.id.IdentifierGenerationException: пустой идентификатор, сгенерированный для: class MyResponse

При проверке точки останова идентификаторы как объекта MyRequest, так и MyResponse внутри него равны нулю.

Та же ошибка возникает при использованииGenerationType.AUTO вместо GenerationType.IDENTITY.Вызовы count () и findAll () в репозитории возвращают 0 и пустой список соответственно.

@Entity
@Table(schema = "MySchema", name = "MyRequest")
@Data
public class MyRequest {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "MyRequestID")
    private Integer myRequestId;

    @OneToOne(mappedBy = "myRequestHeader", fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false)
    private MyResponse myResponse;

    .... Other fields

}


@Entity
@Table(schema = "MySchema", name = "MyResponse")
@Data
public class MyResponse {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "MyResponseID")
    private Integer myResponseId;

    @OneToOne(fetch = FetchType.LAZY)
    @MapsId
    private MyRequest myRequest;

    .... Other fields

}

@Repository
public interface MyRepository extends JpaRepository<MyRequest, Integer> {

}

@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.ANY)
@RunWith(SpringRunner.class)
@AutoConfigureWireMock(port = 0)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyIntegrationTest {

    private MyRepository myRepository

    //construct myRequest

    long count = myRepository.count(); //returns 0

    List<MyRequest> all = myRepository.findAll(); //returns empty list

    myRepository.save(myRequest); // fails with exception
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...