Java не сохраняет оъект ManyToOne
Есть две сущности FileInfo и Issue.
В БД в таблице file_info есть foreign key redmine_id , который связан с колонкой redmine_id в таблице Issue.
Когда я пытаюсь сохранить сущность Issue , в которую я добавляю FileInfo , то в базе данных поле FileInfo остается пустым.
Что я делаю не так ?
Issue:
@Entity
@Data
@NoArgsConstructor
@Table(name = "Issue")
public class Issue {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column
private String fio;
@Column
private String phone;
@Column
private String description;
@Column
private String email;
@Column
private String subject;
@Column
private Integer orgId;
@Column
private String orgName;
@Column
private String project;
@Column
private Long applicantId;
@Column
private String createDate;
@Column
private String updatedOn;
@Column
private String status;
@Column
private Integer redmineId;
@OneToMany(
mappedBy = "issue",
cascade = CascadeType.ALL,orphanRemoval = true)
List<FileInfo> attachments = new ArrayList<>();
FileInfo:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "file_generator")
@SequenceGenerator(name = "file_generator", sequenceName = "article_id_seq", allocationSize = 1)
private Long id;
private String uuid;
private String name;
private String mimeType;
private LocalDateTime createDate;
private String path;
private Long size;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "redmine_id")
private Issue issue;
сервис:
Issue issue = new Issue();
List<FileInfo> fileInfos = new ArrayList<>();
FileInfo fileInfo = fileInfoService.saveFile(file, filename, type);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy,HH:mm");
issue.setApplicantId(dto.getApplicantId());
issue.setCreateDate(LocalDateTime.now().format(formatter));
issue.setFio(dto.getFio());
issue.setPhone(dto.getPhone());
issue.setEmail(dto.getEmail());
issue.setDescription(dto.getDescription());
issue.setSubject(dto.getSubject());
issue.setOrgId(dto.getOrgId());
issue.setOrgName(dto.getOrgName());
issue.setRedmineId(dto.getRedmineId());
issue.setStatus("Новая");
issue.setProject("ПГУ");
fileInfo.setIssue(issue);
fileInfos.add(fileInfo);
issue.setAttachments(fileInfos);
issueRepository.save(issue);
в итоге получаю :
Подробности: Key (redmine_id)=(13908) is not present in table "issue".
Хотя такого redmine_id я не передаю , он пытается сослаться на обычный id . как это решить ?
Ответы (1 шт):
Автор решения: azlov
→ Ссылка
Вообще, если в @Column явно не передать имя колонки, то Hibernate решит, что имя колонки= имя переменной, поэтому вам стоит явно указать
@Column(name="redmine_id")
private Integer redmineId;