Я сохраняю данные в таблицу в базе данных, но она показывает мне ошибку вроде
Решено [org.springframework.beans.ConversionNotSupportedException: Не удалось преобразовать значение свойства типа 'java.lang.Long 'до требуемого типа' com.ashwin.springsecurityangular.model.Letter 'для свойства' letter ';вложенное исключение - java.lang.IllegalStateException: невозможно преобразовать значение типа «java.lang.Long» в требуемый тип «com.ashwin.springsecurityangular.model.Letter» для свойства «letter»: не найдено подходящих редакторов или стратегии преобразования]]
Класс Letter.java
@Entity
@Table(name = "letter")
public class Letter implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long letterNo;
@ManyToOne(fetch = FetchType.EAGER, optional = false,cascade=CascadeType.PERSIST)
@JoinColumn(name = "letterId")
@JsonIgnore
private ClkLetter clkletter;
private String inOut;
private String inOutNo;
private String inOutDate;
private String letterIssuedSubBy;
private String letterFile;
private String representativeName;
@ManyToOne(fetch = FetchType.EAGER, optional = false,cascade=CascadeType.PERSIST)
@JoinColumn(name = "selectionId")
@JsonIgnore
private Selection selection;
@ManyToOne(fetch = FetchType.EAGER, optional = false,cascade=CascadeType.PERSIST)
@JoinColumn(name = "assessmentNo")
@JsonIgnore
private Assessment assessment;
public Letter() {
}
//i omitted all getters and setters
}
LetterDoc.java
Здесь, в этой таблице, я не использовал ни одного столбца, аналогичного используемому нами типу @Idв создании нормальной таблицы. Здесь я использовал два первичных ключа, так как они принадлежат внешнему ключу Letter и Document Class.
@Entity
@Table(name = "letter_doc")
@IdClass(AssignedRoleId.class)
public class LetterDoc implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@ManyToOne(fetch = FetchType.EAGER, optional = false,cascade=CascadeType.PERSIST)
@JoinColumn(name = "letterNo",unique=true)
@JsonIgnore
private Letter letter;
@Id
@ManyToOne(fetch = FetchType.EAGER, optional = false,cascade=CascadeType.PERSIST)
@JoinColumn(name = "documentId",unique=true)
@JsonIgnore
private Document document;
private String docFile;
public LetterDoc(Letter letter, Document document, String docFile) {
this.letter = letter;
this.document = document;
this.docFile = docFile;
}
public Letter getLetter() {
return letter;
}
public void setLetter(Letter letter) {
this.letter = letter;
}
public Document getDocument() {
return document;
}
public void setDocument(Document document) {
this.document = document;
}
public String getDocFile() {
return docFile;
}
public void setDocFile(String docFile) {
this.docFile = docFile;
}
public LetterDoc() {
}
}
AssignedRoleId.java
public class AssignedRoleId implements Serializable {
private Letter letter;
private Document document;
public AssignedRoleId(Letter letter, Document document) {
this.letter = letter;
this.document = document;
}
public AssignedRoleId() {}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof LetterDoc)) {
return false;
}
LetterDoc assignedRole = (LetterDoc) o;
return Objects.equals(letter, assignedRole.getLetter()) &&
Objects.equals(document, assignedRole.getDocument());
}
@Override
public int hashCode() {
return Objects.hash(letter, document);
}
public Letter getLetter() {
return letter;
}
public void setLetter(Letter letter) {
this.letter = letter;
}
public Document getDocument() {
return document;
}
public void setDocument(Document document) {
this.document = document;
}
Я пытаюсь вставить данные, используя:
Сначала вставляются данные в таблице Letter.проблема, поскольку он успешно вставлен:
Letter letter=letterRepository.save(new Letter(clkLetter,sldto.getLetterDto().getInOut(),sldto.getLetterDto().getInOutNo(),sldto.getLetterDto().getInOutDate(),sldto.getLetterDto().getLetterIssuedSubBy(),sldto.getLetterDto().getLetterFile(),sldto.getLetterDto().getRepresentativeName()
,selection,assessment));
Я пытался вставить данные в таблицу letter_doc , но это не происходит. document table - это просто справочная таблица.
Document dox=documentRepository.findById((long)documentDto.getDocId()).get();
letterDocRepository.save(new LetterDoc(letter,dox,"a"));
Мои таблицы в базе данных выглядят так: