当前位置: 首页 > 知识库问答 >
问题:

Hibernate jpa“MappedBy”异常

白彦
2023-03-14
@Entity
public class UserDetails {

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

....
@OneToOne(cascade = CascadeType.ALL)
private UserOffer userOffer;
..... 
//getters and setters
@Entity
public class UserOffer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

.....
@OneToOne(cascade= CascadeType.ALL)
private DetailsOffer detailsOffer;
.....
@Entity
public class DetailsOffer {

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

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

nexr@Entity公共类产品{

@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;

错误:

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

共有1个答案

梁昊天
2023-03-14

在类product中,您需要声明字段detailsoffer并将其映射为@ManyToOne@joincolumn以及引用detailsoffer的列名。

例如:

@ManyToOne
@JoinColumn(name = 'id_details_offer')
private DetailsOffer detailsOffer;

希望对你有帮助。

 类似资料:
  • 问题内容: 我正在使用Hibernate JPA。我下面有Oracle存储过程。 如何调用此存储过程? 问题答案: 检查这个SO问题: 首先,您定义名为本地查询的存储过程: 然后使用以下命令执行它:

  • 问题内容: Foo具有: 和酒吧有: 除了表被称为foo_bar还是bar_foo之外,mappedBy属性的位置对双向关系有何影响?没有mapByBy属性,我得到两个联接表,即foo_bar和bar_foo。 问题答案: 该文档说: 如果关联是双向的,则一侧必须是所有者,而一侧必须是反向端(即,在更新关联表中的关系值时,它将被忽略): 因此,具有属性的一面是反面。没有属性的一方是所有者。 所有者

  • 两者之间有什么区别: 而且

  • 我有三个班,站点,GoupIP和IP 一个站点有一个或多个抱怨。GroupIP有一个或多个IP。 代码如下: 地点 群居 IP 在GroupIp课堂上,我得到: 在属性“ips”中,“映射者”值“groupip”无法解析为目标实体上的属性。 我的代码出了什么问题??

  • 我试图理解JPA中注释的属性。我创建了以下示例,其中客户有一个订单列表: 现在,当我使用Hibernate生成表时,我看到Hibernate只创建了2个表: 另外,如果我试图保存一个客户和一些订单,我会看到下面由Hibernate生成的DML语句: 为什么hibernate尝试在TBL_ORDER中插入和更新记录,而不是仅仅运行一个插入查询? 现在,如果我删除mappedBy属性并尝试生成表,那么

  • 我有两个实体,其中一个我正在使用一个用户输入的PK。 我在启动springboot应用程序时遇到以下异常。 我的实体类如下所示。 我无法弄清楚代码中的问题。