«Отличное сущность принята на стойкость» сразу после спасенияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 «Отличное сущность принята на стойкость» сразу после спасения

Сообщение Anonymous »

У меня есть следующий метод, который бросает org.springframework.dao.invaliddataaccessapiusageexception: отдельная сущность, передаваемая в течение постоянного: com.domain.passenger на eforciclerepository.saveall call. Я не понимаю, почему это происходит, так как пассажир сохраняется всего за несколько строк, и, следовательно, разве это не должно быть прикрепленным сущностью? Я особенно сбит с толку, потому что свойство Сохранить и передавать это в пассажир работает очень хорошо. :
@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "passenger_id", updatable = false)
@JsonManagedReference(value = "vehicle-passenger")
private Passenger passenger;
< /code>
А вот метод настроек модульного теста: < /p>
@DataJpaTest
@Transactional(propagation = NOT_SUPPORTED)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class Tests {

@BeforeAll
void setup() {

Vehicle veh1 = build.fromFile(Vehicle.class, "json/Vehicle");
Vehicle veh2 = build.fromFile(Vehicle.class, "json/Vehicle");
Vehicle veh3 = build.fromFile(Vehicle.class, "json/Vehicle");
Vehicle veh4 = build.fromFile(Vehicle.class, "json/Vehicle");

// persist a property to use
Property property = build.fromFile(Property.class, "json/Property");
property.setPropertyId(1L);
propertyRepository.save(property);

Passenger passenger1 = build.fromFile(Passenger.class, "json/Passenger");
Passenger passenger2 = build.fromFile(Passenger.class, "json/Passenger");

// add test properties to passengers
passenger1.setProperty(property);
passenger2.setProperty(property);
passenger1 = passengerRepository.save(passenger1);
passenger2 = passengerRepository.save(passenger2);

// add test passengers to vehicles
veh1.setPassenger(passenger1);
veh2.setPassenger(passenger2);

vehicleRepository.saveAll(List.of(
veh1,
veh2,
veh3,
veh4
));
}

.....
< /code>
@Data
@Entity
@DiscriminatorValue("VEHICLE")
@FieldNameConstants
@SuperBuilder
@RequiredArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Vehicle extends Conveyance {
.. removed unrelated properties for brevity ...
}
< /code>
@Data
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "CONVEYANCE_TYPE", discriminatorType = DiscriminatorType.STRING)
@FieldNameConstants
@SuperBuilder
@RequiredArgsConstructor
@AllArgsConstructor
public abstract class Conveyance {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "conveyance_id_seq")
@SequenceGenerator(name = "conveyance_id_seq", allocationSize = 1)
@Setter(AccessLevel.NONE)
private Long id;

@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "passenger_id", updatable = false)
@JsonManagedReference(value = "conveyance-passenger")
private Passenger passenger;
}

< /code>
@Data
@Entity
@FieldNameConstants
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Passenger {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "passenger_id_seq")
@SequenceGenerator(name = "passenger_id_seq", allocationSize = 1)
@Setter(AccessLevel.NONE)
private Long id;

@Column(
unique = true,
updatable = false,
columnDefinition = "bigint GENERATED ALWAYS AS IDENTITY (START WITH 10)"
)
@Generated(event = EventType.INSERT)
private Long passengerId;

@ManyToOne
@JoinColumn(name = "property_id")
@JsonBackReference
private Property property;

@OneToOne(cascade = CascadeType.PERSIST, mappedBy = Conveyance.Fields.passenger)
@EqualsAndHashCode.Exclude
@JsonBackReference(value = "conveyance-passenger")
private Conveyance conveyance;
}
< /code>
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldNameConstants
public class Property {

public Property(Long id) {
this.id = id;
}

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "property_id_seq")
@SequenceGenerator(name = "property_id_seq", allocationSize = 1)
@Setter(AccessLevel.NONE)
private Long id;

@Column(unique = true)
private Long propertyId;
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... ter-saving
Ответить

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

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

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

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

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