【问题标题】:how to save foreign key entities using spring DAO如何使用spring DAO保存外键实体
【发布时间】:2016-08-21 03:47:15
【问题描述】:
    public class Customer implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "idCustomer")
    private Integer idCustomer;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idCustomer")
    private Collection<Login> loginCollection;

    }

    public class Login implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idLogin")

    @JoinColumn(name = "idCustomer", referencedColumnName = "idCustomer")
    @ManyToOne(optional = false)
    private Customer idCustomer;

    }

    //trying to save the customer and login in the database  

        ArrayList<Login> logins = new ArrayList<Login>();
        Login log = new Login();
        log.setIdCustomer(cust);
        logins.add(log);
        cust.setLoginCollection(logins);
        cust = custRepo.save(cust);  //failed 

    //Login log = new Login();
    //log.setUName(user);
    //log.setPassword(pass);
    //log.setIdCustomer(cust);
    //cust = custRepo.save(cust);
    //logRepository.save(log);  //failed too.

我在我的项目中使用弹簧数据。我有 2 个模型类 CustomerLogin。我的登录类在数据库中有一个外键idCustomer。当我尝试在没有登录的情况下保存客户时,它工作正常,但问题是我无法在数据库中保存登录对象。

我收到一个错误提示

“字段列表”中的未知列“id_customer” 生成 jpa 实体。

这是一个图像实际数据库。

【问题讨论】:

    标签: java hibernate jpa spring-boot spring-data


    【解决方案1】:

    您的示例中idCustomers 太多。

    试试下面的代码。 我对带注释的成员@OneToMany 和@ManyToOne 进行了一些更改, 按照此处建立的提示JPA JoinColumn vs mappedBy

    我还在登录类中包含了 idLogin。我不知道这是否是您代码中的拼写错误。

    public class Customer implements Serializable {
         @Id
         @GeneratedValue(strategy = GenerationType.IDENTITY)
         @Column(name = "idCustomer")
         private Integer idCustomer;
    
         @OneToMany(cascade = CascadeType.ALL, mappedBy = "customer")
         private Collection<Login> loginCollection;
    
    }
    
    public class Login implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "idLogin")
        private Integer idLogin;
    
        @ManyToOne
        @JoinColumn(name="idCustomer", insertable=false, updatable=false)
        private Customer customer;
    
    }
    

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 2021-07-01
      • 2013-05-10
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多