OnetoOne 未知映射者
Posted
技术标签:
【中文标题】OnetoOne 未知映射者【英文标题】:OnetoOne unknown mappedBy 【发布时间】:2017-10-20 08:05:47 【问题描述】:我在以下两个实体的关系之间遇到了 mappedBy 未知错误。
这是一对一的关系,关系的所有者应该是 Story 实体。我在这段代码中看不到我的错误。
两个实体都有 getter 和 setter。
这是第一个实体:
@Entity
@Table(name = "story")
public class Story
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
private String link;
@OneToOne(mappedBy = "story", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private DesignTechnique designTechnique;
public Story()
public Story(String name, String link)
this.name = name;
this.link= link;
public Integer getId()
return id;
public void setId(Integer id)
this.id = id;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getLink()
return link;
public void setLink(String link)
this.link= link;
public DesignTechnique getDesignTechnique()
return designTechnique;
public void setDesignTechnique(DesignTechnique designTechnique)
this.designTechnique = designTechnique;
@Override
public String toString()
return "UserStory" +
"id=" + id +
", name='" + name + '\'' +
", link='" + link+ '\'' +
", designTechnique='" + designTechnique + '\'' +
'';
这是第二个实体:
@Entity
@Table(name = "designTechnique")
public class DesignTechnique
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String technique;
@OneToOne
@JoinColumn(name = "story_ID")
private Story story;
public DesignTechnique()
public DesignTechnique(String technique)
this.technique = technique;
public Integer getId()
return id;
public void setId(Integer id)
this.id = id;
public String getTechnique()
return technique;
public void setTechnique(String technique)
this.technique = technique;
public Story getStory()
return story;
public void setStory(Story story)
this.story = story;
@Override
public String toString()
return "TestdesignTechnique" +
"id=" + id +
", technique='" + technique + '\'' +
", story='" + story+ '\'' +
'';
编辑
堆栈跟踪:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unknown mappedBy in: com.clusters.Model.Story.designTechnique, referenced property unknown: com.clusters.Model.DesignTechnique.story
编辑 2
我尝试在设计实体中添加@PrimaryKeyJoinColumn 而不是@JoinColumn,得到同样的错误。
我已经在两个实体中生成了 getter 和 setter。所以这些东西没有错别字。
【问题讨论】:
你能发布完整的 Stacktrace 吗? @mrkernelpanic 添加了错误 尝试离开mappedBy = "story",
,或者更好地阅读javaDoc到mappedBy
@HerrDerb 如果我理解正确,需要使用 mappedBy 来判断哪个是双向关系中的所有者
好吧,再试一次 :) 在你的 DesginTechnique
中使用 @PrimaryKeyJoinColumn
而不是 @JoinColumn(name ="story_ID")
hibernate-one-to-one-relationship
【参考方案1】:
这可能是一个休眠错误!看到这个:
https://hibernate.atlassian.net/browse/HHH-5695
尝试更改您使用的休眠版本。
【讨论】:
以上是关于OnetoOne 未知映射者的主要内容,如果未能解决你的问题,请参考以下文章
Hibernate @OneToOne 单向映射...级联删除