【问题标题】:I'm getting error in @OneToMany hibernate mapping?我在@OneToMany 休眠映射中遇到错误?
【发布时间】:2017-03-21 21:11:52
【问题描述】:

我试图在两个类之间建立一对多连接,但我收到此错误org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany

这是我的代码,

Job.java

@OneToMany
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)

private Set<JobCostSplit> jobCostSplit;

JobCostSplit.java

@Column(name = "job_id")
private Long jobId;

@JsonIgnore
@OneToMany
@JoinColumn(name = "job_id", referencedColumnName = "id", insertable = false, updatable = false)
private Job job;

【问题讨论】:

    标签: java hibernate spring-boot annotations hibernate-mapping


    【解决方案1】:

    您必须将 JobCostSplit 中的字段注释为 @ManyToOne

     @ManyToOne
     private Job job
    

    【讨论】:

      【解决方案2】:

      您使用@OneToMany 注释您的Job。意味着您将在Job 上拥有一个属性,在JobCostSplit 上拥有更多属性。

      所以如果你想拥有一个Job 和更多JobCostSplit,你必须这样设置:

      @ManyToOne
      @JoinColumn(name = "job_id", referencedColumnName = "id", insertable = false, updatable = false)
      private Job job;
      

      【讨论】:

        【解决方案3】:

        首先你需要写

        @OneToMany(fetch = FetchType.LAZY, mappedBy = "job")
        private Set<JobCostSplit> jobCostSplit= new HashSet<JobCostSplit>();
        

        在 Job.java 中,然后添加

        @ManyToOne(fetch=FetchType.LAZY)
        @JoinColumn(name="jobId",nullable=false)
        private Job job;
        

        在 JobCostSplit.java 中

        【讨论】:

          【解决方案4】:

          在 job.java 中将 @OneToMany 替换为 @ManyToOne

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-01-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-16
            • 1970-01-01
            • 1970-01-01
            • 2012-02-27
            相关资源
            最近更新 更多