【问题标题】:Unknown mappedBy in:... referenced property unknownUnknown mappedBy in:... 引用的属性未知
【发布时间】:2021-03-12 18:28:37
【问题描述】:

我尝试了我在互联网上找到的所有内容,但它不想工作。我必须实体:用户和汽车。它们都在包 hiber.model 中。在调用下面的代码后,我得到Unknown mappedBy in: hiber.model.User.car, referenced property unknown: hiber.model.Car.user。但是当我删除mappedBy 选项时,我得到@OneToOne or @ManyToOne on hiber.model.User.car references an unknown entity: hiber.model.Car。这两个类都放入了属性。可以是什么?这段代码已经像互联网上的每个站点一样。 Project on github

@Entity
@Table(name = "users")
public class User {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   @Column(name = "name")
   private String firstName;

   @Column(name = "last_name")
   private String lastName;

   @Column(name = "email")
   private String email;

   @OneToOne(mappedBy = "user")
   private Car car;

Constructors, getters, setters...
}

 @Entity
    @Table
    public class Car {
    
        @Id
        @Column
        private String model;
    
        @Column
        private String series;
    
        @OneToOne
        @JoinColumn(name = "id")
        private User user;

Getters, setters...
}

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    复制你的 Github 项目我可以看到你有这个 Bean,它正在抛出异常:

    @Bean(name = "ses")
    public LocalSessionFactoryBean getSessionFactory() {
        LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
        factoryBean.setDataSource(getDataSource());
    
        Properties props = new Properties();
        props.put("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
        props.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
        props.put("hibernate.dialect", env.getProperty("hibernate.dialect"));
    
        factoryBean.setHibernateProperties(props);
        factoryBean.setAnnotatedClasses(Car.class);
        factoryBean.setAnnotatedClasses(User.class);
        return factoryBean;
    }
    

    这里的问题是,当您调用 factoryBean.setAnnotatedClasses 两次时,您会用第二个类覆盖您设置的第一个类。因此,当您映射用户时,您不再映射汽车。您需要像这样通过每个课程:

    factoryBean.setAnnotatedClasses(Car.class, User.class);
    

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 2016-02-05
      • 2011-08-15
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      相关资源
      最近更新 更多