«org.springframework.beans.ConversionNotSupportedException» Ошибка весной при вставке данных в базу данных - PullRequest
0 голосов
/ 18 ноября 2018

Я сохраняю данные в таблицу в базе данных, но она показывает мне ошибку вроде

Решено [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"));

Мои таблицы в базе данных выглядят так:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...