Spring Data JPA нарушает ограничение внешнего ключа, хотя зарегистрированные запросы и их связанные параметры выглядят тJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Data JPA нарушает ограничение внешнего ключа, хотя зарегистрированные запросы и их связанные параметры выглядят т

Сообщение Anonymous »

У меня есть серверная часть Spring Boot, которая использует Spring Data JPA для связи с базой данных. Я пытаюсь сохранить элемент корзины в базе данных, но ограничение внешнего ключа не работает при сохранении дочерней строки в таблице, которая устанавливает связь «многие ко многим» между элементами корзины и экскурсиями. Проверка зарегистрированных SQL-запросов и их связанных параметров не выявила каких-либо проблем, которые я вижу.
Возможно, стоит отметить, что это школьный проект, а не настоящая серверная часть, которая будет размещена. в производство. И база данных, и внешний интерфейс были предоставлены мне и поэтому наверняка находятся в рабочем состоянии.
Соответствующими классами сущностей являются Customer, Cart, CartItem и Excursion. Экскурсии и CartItems имеют отношение многие-ко-многим, которое определяется следующим образом:

Код: Выделить всё

@Entity(name="cart_items")
public class CartItem {
@Id
@Column(name="cart_item_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;

// ...

@ManyToMany
@JoinTable(name="excursion_cartitem",
joinColumns = {@JoinColumn(name="cart_item_id")},
inverseJoinColumns = {@JoinColumn(name="excursion_id")}
)
@Getter
@Setter
private Set excursions = new HashSet();
}

Код: Выделить всё

@Entity(name="excursions")
public class Excursion {
@Id
@Column(name="excursion_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;

// ...

@ManyToMany(mappedBy="excursions")
private Set cartItems = new HashSet();
}
RestController обрабатывает запросы на публикацию. Каждый запрос содержит Customer, Cart и список CartItems. Все сущности имеют соответствующие объекты DAO, которые расширяют JPARepository и автоматически подключаются к классу контроллера.

Код: Выделить всё

@RestController
@CrossOrigin
public class CheckoutController {
// ...

@PostMapping("...")
@Transactional
public ResponseEntity
 checkout(@RequestBody PurchaseData purchaseData) {
String orderTrackingNumber = "#################";

purchaseData.setCartOrderTrackingNumber(orderTrackingNumber);

// Adds the Customer to the Cart, and the Cart to all the CartItems.
purchaseData.resolveConnections();

cartDao.save(purchaseData.getCart());
cartItemDao.saveAll(purchaseData.getCartItems());

PurchaseResponse response = new PurchaseResponse();
response.setOrderTrackingNumber(orderTrackingNumber);
return ResponseEntity.ok(response);
}
}
Если я использую внешний интерфейс для отправки этого запроса на публикацию и были выбраны какие-либо экскурсии, в выводе появится следующее:

Код: Выделить всё

Hibernate: insert into cart_items (cart_id,create_date,last_update,vacation_id) values (?,?,?,?)
2024-07-14T20:21:07.470-04:00 TRACE 3740 --- [nio-8080-exec-2] org.hibernate.orm.jdbc.bind              : binding parameter (1:BIGINT) 

Подробнее здесь: [url]https://stackoverflow.com/questions/78747713/spring-data-jpa-violating-foreign-key-constraint-although-the-logged-queries-and[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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