как соединить две таблицы в весенней загрузке JPA, я получаю ошибку с моим кодом - PullRequest
0 голосов
/ 13 декабря 2018

Привет, я хочу присоединиться к моему столу из оракула, как присоединиться к этому столу?я использую jpa для соединения моего стола на весенней загрузке.и это мой код:

package com.emerio.rnd.bali.oraclemongoservice.entity;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import com.emerio.rnd.bali.oraclemongoservice.entity.TblmFormManagement;


@Table(name = "TBLM_FORM")
@Entity
public class TblmForm{

    // @Column(name = "PKID")
    @Id
    private Long pkid;
    // @Column(name = "FORMCODE")
    private String formcode;

    @OneToOne(cascade=CascadeType.ALL, mappedBy="TblmFormManagement")
    private TblmFormManagement tblmFormManagement;



    public TblmFormManagement getTblmFormManagement(){
        return tblmFormManagement;
    }

    public void setMapping(TblmFormManagement tblmFormManagement){
        this.tblmFormManagement=tblmFormManagement;
    }


    // @Column(name = "REPORTITEM")
    // private String reportitem;
    // @Column(name = "REPORTFIELD")
    // private String reportfield;

    public TblmForm() {
    }

    public Long getPkid() {
        return this.pkid;
    }

    public void setPkid(Long pkid) {
        this.pkid = pkid;
    }

    public String getFormcode() {
        return this.formcode;
    }

    public void setFormcode(String formcode) {
        this.formcode = formcode;
    }

    // public String getReportitem() {
    //     return this.reportitem;
    // }

    // public void setReportitem(String reportitem) {
    //     this.reportitem = reportitem;
    // }

    // public String getReportfield() {
    //     return this.reportfield;
    // }

    // public void setReportfield(String reportfield) {
    //     this.reportfield = reportfield;
    // }
    // @OneToOne(mappedBy = "tblmForm")
    // public Mapping getMapping() {
    //     return mapping;
    // }

    // public void setBook(Mapping mapping) {
    //     this.mapping = mapping;
    // }

}

Моя вторая сущность:

package com.emerio.rnd.bali.oraclemongoservice.entity;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Table(name = "TBLM_FORMMANAGEMENT")
@Entity
public class TblmFormManagement{


    // @OneToOne(mappedBy = "mapping")
    @Id
    private Long pkid;
    private String formcode;
    private String reportitem;
    private String reportfield;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "pkid", nullable=true)
    private TblmForm tblmForm;


    public TblmForm getTblmForm() {
        return tblmForm;
    }

    public void setTblmForm(TblmForm tblmForm) {
        this.tblmForm = tblmForm;
    }


    public TblmFormManagement() {
    }



    public Long getPkid() {
        return this.pkid;
    }

    public void setPkid(Long pkid) {
        this.pkid = pkid;
    }

    public String getFormcode() {
        return this.formcode;
    }

    public void setFormcode(String formcode) {
        this.formcode = formcode;
    }

    public String getReportitem() {
        return this.reportitem;
    }

    public void setReportitem(String reportitem) {
        this.reportitem = reportitem;
    }

    public String getReportfield() {
        return this.reportfield;
    }

    public void setReportfield(String reportfield) {
        this.reportfield = reportfield;
    }

    // @OneToOne(cascade = CascadeType.ALL)
    // @JoinColumn(name = "pkid")



}

Ошибка получения iam:

Исключительная ситуация при инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем entityManagerFactory, определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]: сбой вызова метода init;Вложенное исключение - org.hibernate.AnnotationException: неизвестно*

есть идеи для решения моей проблемы?спасибо

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

попробуйте это.

package com.emerio.rnd.bali.oraclemongoservice.entity;

    import java.io.Serializable;

    import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.OneToOne;
    import javax.persistence.Table;
    import com.emerio.rnd.bali.oraclemongoservice.entity.TblmFormManagement;


    @Table(name = "TBLM_FORM")
    @Entity
    public class TblmForm{


        @Id
        private Long pkid;

        @Column(name = "FORMCODE")
        private String formcode;

        @OneToOne(cascade=CascadeType.ALL, mappedBy="tblmForm")
        private TblmFormManagement tblmFormManagement;



        public TblmFormManagement getTblmFormManagement(){
            return tblmFormManagement;
        }

        public void setMapping(TblmFormManagement tblmFormManagement){
            this.tblmFormManagement=tblmFormManagement;
        }

       public Long getPkid() {
            return this.pkid;
        }

        public void setPkid(Long pkid) {
            this.pkid = pkid;
        }

        public String getFormcode() {
            return this.formcode;
        }

        public void setFormcode(String formcode) {
            this.formcode = formcode;
        }

.

package com.emerio.rnd.bali.oraclemongoservice.entity;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Table(name = "TBLM_FORMMANAGEMENT")
@Entity
public class TblmFormManagement{



    @Id
    private Long pkid;
    private String formcode;
    private String reportitem;
    private String reportfield;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "pkid", nullable=true)
    private TblmForm tblmForm;


    public TblmForm getTblmForm() {
        return tblmForm;
    }

    public void setTblmForm(TblmForm tblmForm) {
        this.tblmForm = tblmForm;
    }


    public TblmFormManagement() {
    }



    public Long getPkid() {
        return this.pkid;
    }

    public void setPkid(Long pkid) {
        this.pkid = pkid;
    }

    public String getFormcode() {
        return this.formcode;
    }

    public void setFormcode(String formcode) {
        this.formcode = formcode;
    }

    public String getReportitem() {
        return this.reportitem;
    }

    public void setReportitem(String reportitem) {
        this.reportitem = reportitem;
    }

    public String getReportfield() {
        return this.reportfield;
    }

    public void setReportfield(String reportfield) {
        this.reportfield = reportfield;
    }

    // @OneToOne(cascade = CascadeType.ALL)
    // @JoinColumn(name = "pkid")



}
0 голосов
/ 13 декабря 2018

Отображение @OneToOne неверно, код работает ниже с тестовой базой данных H2:

@Table(name = "TBLM_FORM")
@Entity
public class TblmForm{

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long pkid;

    // TAKE NOTE that form points to a property in the second entity TblmFormManagement
    @OneToOne(fetch = FetchType.EAGER,
            cascade =  CascadeType.ALL,
            mappedBy = "form")
    private TblmFormManagement tblmFormManagement;
}

Таким образом, вторая сущность будет выглядеть следующим образом:

public class TblmFormManagement {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long pkid;

    private String formcode;

    private String reportitem;

    private String reportfield;

    @OneToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "form_id", nullable=true)
    private TblmForm form;

}

Что нужно отметить:

  • mappedBy в TblmForm.tblmFormManagement указывает на свойство Java в TblmFormManagement
  • Имя @JoinColumn в TblmFormManagement.form указывает на столбец базы данных таблицы, определенной в TblmMF1012 *

Надеюсь, что вышеуказанные указатели вам пригодятся.

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