"Distachiertes Unternehmen, das an Bestehen gebracht wurde", unmittelbar nach dem SparenJava

Java-Forum
Guest
 "Distachiertes Unternehmen, das an Bestehen gebracht wurde", unmittelbar nach dem Sparen

Post by Guest »

Ich habe die folgende Methode, die eine org.springframework.dao.invaliddataAccessapiusageException: abgenommene Entität an persist: com.domain.Pasger auf dem vehicleRepository.Saveall Call werfen. Ich verstehe nicht, warum dies geschieht, da der Passagier noch ein paar Zeilen bestehen wird, und sollte es daher nicht noch eine beigefügte Einheit sein? Ich bin besonders verwirrt, weil die Eigenschaft speichern und in Passagier in Ordnung funktioniert. ist:

Code: Select all

@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "passenger_id", updatable = false)
@JsonManagedReference(value = "vehicle-passenger")
private Passenger passenger;
< /code>
Und hier ist die Methode zur Einrichtung der Unit -Test: < /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;
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post