Я впервые работаю над проектом с Hibernate и Spring. Я решил использовать однонаправленное отображение, и это сработало довольно хорошо, за исключением одной вещи. Всякий раз, когда я пытаюсь сохранить событие с объектом EventType в нем. это дает мне следующую ошибку: java.sql.SQLException: Field 'type_id' doesn't have a default value
Я использую стандартную функцию репозитория JPA evenementRepository.save(evenement);
Вот как выглядит моя база данных:
это мой класс событий
@Entity
@Table(name = "evenement")
@EntityListeners(AuditingEntityListener.class)
public class Evenement {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String naam;
private Date datum;
private String status;
private String beschrijving;
private String locatie;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "type_id", nullable = false, insertable = false, updatable = false, foreignKey = @ForeignKey(name = "evenement_ibfk_3"))
private Evenement_Type eventType;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "template_id", nullable = true, insertable = false, updatable = false, foreignKey = @ForeignKey(name = "evenement_ibfk_2"))
private Template template;
//getters and setters
это мой класс Event_Type:
@Entity
@Table(name = "evenement_type")
@EntityListeners(AuditingEntityListener.class)
public class Evenement_Type {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String naam;
private String beschrijving;
//getters and setters
контроллер
@RestController
@RequestMapping("/")
public class EvenementController {
@Autowired
EvenementDAO evenementDAO;
@PostMapping("/evenement")
public Evenement createEvenement(@Valid @RequestBody Evenement evenement) {
return evenementDAO.save(evenement);
}
dao
как вы можете видеть, я дважды проверяю, имеет ли событие фактический event_type и имеет ли event_type идентификатор. я на 100% уверен, что проблема не в этом. он всегда имеет вывод в консоли.
@Service
public class EvenementDAO {
@Autowired
EvenementRepository evenementRepository;
@Autowired
Template_TaakDAO template_taakDAO = new Template_TaakDAO();
@Autowired
TaakDAO taakDAO = new TaakDAO();
public Evenement save(Evenement evenement) {
System.out.println(evenement.getEventType().getId());
return evenementRepository.save(evenement);
}
JSON объект, отправленный через почтальона
{
"naam": "test-name",
"datum": "2021-08-08",
"status": "test-status",
"beschrijving": "test-description",
"locatie": "test-location",
"eventType": {
"id": 1,
"naam": "test-name",
"beschrijving": "test-description"
},
"template": null
}
есть еще один класс, который использует Event_Type в качестве внешнего ключа, который также не ' т работать. все остальные классы с внешними ключами у меня нет проблем с сохранением. Я почти уверен, что это либо отображение, либо что-то в моей базе данных, но я не могу понять, что именно. Мне жаль, что большая часть моего кода написана на моем родном языке, это действительно плохая привычка (все, что вам нужно знать, это то, что событие означает событие).
пожалуйста, помогите, я застрял на долгие годы. если я забыл опубликовать важную информацию, скажите об этом.