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-inserting-foreign-key-that-does-not-match-the-primary-key-insert[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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