首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate jpa "mappedBy“异常

Hibernate jpa "mappedBy“异常
EN

Stack Overflow用户
提问于 2018-04-10 14:51:37
回答 1查看 448关注 0票数 1

当我想使用持久化方法向数据库中添加新的UserDetails对象时,我的JPA数据库出现了问题。然后我得到了异常:“密钥hibernate的重复条目2”--这个异常与Product有关。我找到了基于向@OneToMany (上面的Product列表)添加mappedBy参数的解决方案,但是我得到了"mappedBy引用一个未知的目标实体属性“,有解决方案吗?

代码语言:javascript
复制
@Entity
public class UserDetails {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

....
@OneToOne(cascade = CascadeType.ALL)
private UserOffer userOffer;
..... 
//getters and setters

下一首

代码语言:javascript
复制
@Entity
public class UserOffer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

.....
@OneToOne(cascade= CascadeType.ALL)
private DetailsOffer detailsOffer;
.....

下一首

代码语言:javascript
复制
@Entity
public class DetailsOffer {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@OneToMany(cascade = CascadeType.ALL, mappedBy="detailsOffer")
private List<Product> products;

nexr @Entity公共类产品{

代码语言:javascript
复制
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private PetType petType;
private int petNumber;
@ElementCollection
private List<String> goodies;
private String petDescribtion;
private BigDecimal price;

错误:

代码语言:javascript
复制
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.knr.domain_ver2.Product.detailsOffer in com.knr.domain_ver2.DetailsOffer.products
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:769) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:719) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:54) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1655) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1623) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.14.RELEASE.jar:4.3.14.RELEASE]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:360) ~[spring-orm-4.3.14.RELEASE.jar:4.3.14.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:382) ~[spring-orm-4.3.14.RELEASE.jar:4.3.14.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:371) ~[spring-orm-4.3.14.RELEASE.jar:4.3.14.RELEASE]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:336) ~[spring-orm-4.3.14.RELEASE.jar:4.3.14.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.14.RELEASE.jar:4.3.14.RELEASE]
    ... 16 common frames omitted
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-10 19:15:29

在类Product中,您需要声明字段detailsOffer,并使用引用DetailsOffer的列名将其映射为@ManyToOne@JoinColumn

例如:

代码语言:javascript
复制
@ManyToOne
@JoinColumn(name = 'id_details_offer')
private DetailsOffer detailsOffer;

希望它能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49756738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档