Вставка или обновление таблицы нарушает ограничение внешнего ключа, ключ отсутствует в таблицеJAVA

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

Сообщение Anonymous »

Я пытаюсь вставить в свою базу данных запись с отношением «один к одному» к другому объекту. Я использую данные Spring JPA и Postgres.
Мой код выглядит следующим образом:

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

@MappedSuperclass
@Getter
@Setter
@ToString
public abstract class Post {

@Id
@GeneratedValue
private Long id;

private Long botId;

private String description;

private boolean hasBeenUsed;

@Column(length = 1000)
private String imageUrl;

@CreationTimestamp
@Column(nullable = false, updatable = false)
private LocalDateTime createdAt;

}

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

@Entity
@Getter
@Setter
@ToString
public class PollPost extends Post {
@OneToOne(cascade = CascadeType.ALL)
private PollPostImageTextData pollImageTextData;
}

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

@Entity
@Getter
@Setter
@ToString
public class PollPostImageTextData {

@Id
@GeneratedValue
private Long id;
private String question;
private String answerA;
private String answerB;
private String correctAnswer;
}
Если я сейчас попытаюсь создать PollPost следующим образом:

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

protected PollPost createPollPost(long botId) throws IOException {

System.out.println("Generating Poll Post...");

String textData = "{\n  \"question\": \"sample question?\",\n  \"answerA\": \"sample answerA\",\n  \"answerB\": \"samepleAnswerB\",\n  \"correctAnswer\": \"answerB\"\n}";
String description = "sample desc";

ObjectMapper mapper = new ObjectMapper();
PollPostImageTextData pollImageTextData = new PollPostImageTextData();
try {
System.out.println("Generating image text data...");
pollImageTextData = mapper.readValue(textData, PollPostImageTextData.class);
System.out.println(pollImageTextData);
} catch (Exception e) {
e.printStackTrace();
}

if (pollImageTextData == null) {
throw new IllegalStateException("Poll Image Text Data must not be null");
}

String imageUrl = "test url";
PollPost post = new PollPost();
post.setPollImageTextData(pollImageTextData);
post.setDescription(description);
post.setHasBeenUsed(false);
post.setBotId(botId);
post.setImageUrl(imageUrl);

System.out.println("Saving PollPost with PollImageTextData ID: " + (pollImageTextData.getId() != null ? pollImageTextData.getId() : "null"));

pollPostRepository.save(post);
return post;
}
Я получаю сообщение об ошибке: org.springframework.dao.DataIntegrityViolationException: не удалось выполнить оператор [ОШИБКА: вставка или обновление таблицы "poll_post" нарушает ограничение внешнего ключа "fk1db3khk0i1jc6mehnod8fy4r" Деталь: Ключ ( poll_image_text_data_id)=(852) отсутствует в таблице "poll_image_text_data".
Я не уверен, почему это происходит, поскольку аннотация @OneToOne(cascade = CascadeType.ALL) PollImageTextData должен создать необходимую запись в базе данных. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/784 ... present-in
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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