Java hibernate:@OneToMany协会不';行不通

Java hibernate:@OneToMany协会不';行不通,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,在我的代码中,customer类和item类之间有一个oneToMany关系。这意味着,客户可能有一个或多个项目。 以下是客户代码: @Entity @Data public class customer { @Id @GeneratedValue int id; String name; String lastname; @Embedded Address address; @OneToMany @Column

在我的代码中,
customer
类和
item
类之间有一个
oneToMany
关系。这意味着,客户可能有一个或多个项目。 以下是客户代码:

@Entity
@Data

public class customer {

    @Id
    @GeneratedValue
    int id;

    String name;
    String lastname;

    @Embedded
    Address address;

    @OneToMany
     @Column(name="ITEM_ID")
    List<item> item;    
}
然后,我做了一些测试来尝试在模型中进行查询

insert into item(id,name,Serialnumber,price) values(1,'bike','123',200);
insert into item(id,name,Serialnumber,price) values(2,'car','123',200);


insert into customer(id,name,lastname,Country,City,Street,No,item_id) 
values(1,'Salman','Lashkarara','Iran','Tehran','Shariati','12',1);

insert into customer(id,name,lastname,Country,City,Street,No,item_id) 
values(2,'Saba','Lashkarara','Iran','Tehran','Shariati','12',2);


insert into customer(id,name,lastname,Country,City,Street,No,item_id) 
values(3,'Saba','Lashkarara','Iran','Tehran','Shariati','12',1);
但当我运行代码时,我会遇到以下错误:

Column "ITEM_ID" not found; SQL statement:
insert into customer(id,name,lastname,Country,City,Street,No,item_id) values(1,'Salman','Lashkarara','Iran','Tehran','Shariati','12',1)
请特别注意,它是一个
java mvc spring
应用程序,我使用该代码创建模型,因此没有数据库来检查字段项\u id

如您所见,我已经添加了
@列(name=“ITEM\u ID”)
来定义列。

您必须使用关联列:

@OneToMany
@JoinColumn(name="ITEM_ID")
List<item> item; 
@OneToMany
@JoinColumn(name=“ITEM\u ID”)
清单项目;
其他一些选项

@OneToMany(cascade=CascadeType.All, fetch=FetchType.EAGER)
@JoinColumn(name="ITEM_ID")
List<item> item; 

你可以这样做,我还有
user
类和
bcr
类,一个用户有多个bcr,所以下面的代码将帮助你

bcr.java

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_who_enter_demand", nullable = false)
    public User getUserByUserWhoEnterDemand() {
    return this.userByUserWhoEnterDemand;
    }

    public void setUserByUserWhoEnterDemand(User userByUserWhoEnterDemand) {
    this.userByUserWhoEnterDemand = userByUserWhoEnterDemand;
    }
@OneToMany(fetch = FetchType.LAZY, mappedBy = "userByUserWhoEnterDemand")
    public Set<BudgetControlRegister> getBudgetControlRegistersForUserWhoEnterDemand() {
    return this.budgetControlRegistersForUserWhoEnterDemand;
    }

    public void setBudgetControlRegistersForUserWhoEnterDemand(Set<BudgetControlRegister> budgetControlRegistersForUserWhoEnterDemand) {
    this.budgetControlRegistersForUserWhoEnterDemand = budgetControlRegistersForUserWhoEnterDemand;
    }
user.java

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_who_enter_demand", nullable = false)
    public User getUserByUserWhoEnterDemand() {
    return this.userByUserWhoEnterDemand;
    }

    public void setUserByUserWhoEnterDemand(User userByUserWhoEnterDemand) {
    this.userByUserWhoEnterDemand = userByUserWhoEnterDemand;
    }
@OneToMany(fetch = FetchType.LAZY, mappedBy = "userByUserWhoEnterDemand")
    public Set<BudgetControlRegister> getBudgetControlRegistersForUserWhoEnterDemand() {
    return this.budgetControlRegistersForUserWhoEnterDemand;
    }

    public void setBudgetControlRegistersForUserWhoEnterDemand(Set<BudgetControlRegister> budgetControlRegistersForUserWhoEnterDemand) {
    this.budgetControlRegistersForUserWhoEnterDemand = budgetControlRegistersForUserWhoEnterDemand;
    }
@OneToMany(fetch=FetchType.LAZY,mappedBy=“userbyuserwhenterdemand”)
公共设置getBudgetControlRegistersForUserWhoEnterDemand()的GetBudgetControlRegisters{
返回此.BudgetControlRegistersforUserWhenterDemand;
}
public void setBudgetControlRegistersForUserWhoEnterDemand(设置budgetControlRegistersForUserWhoEnterDemand){
this.budgetControlRegistersForUserWhoEnterDemand=budgetControlRegistersForUserWhoEnterDemand;
}

如果没有表,则无法映射表列:

@Entity
@Table(name = "ITEM_TABLE")
public class item {
...
 @ManyToOne(fetch=FetchType.LAZY)
 @JoinColumn(name = "CUSTOMER_ID_ITEM_TABLE") 
 private customer customer;
...
}

@Entity
@Table(name = "CUSTOMER_TABLE")
public class customer {
...
  @OneToMany
  @Column(name="ITEM_ID")
  List<item> item;    
}
@实体
@表(name=“ITEM_Table”)
公共类项目{
...
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“客户ID项目表”)
私人客户;
...
}
@实体
@表(name=“CUSTOMER\u Table”)
公共类客户{
...
@独身癖
@列(name=“ITEM\u ID”)
清单项目;
}

这对我来说毫无意义。一个客户可以有多个项目。因此,对项目的引用不可能在客户表中。您在这里发布的映射很可能创建了customer和item之间的n:m映射表。如果使用mappedBy属性,则引用可能位于项表中(作为对客户的引用),如果我是正确的,则项id列位于项表中,并且您尝试将其插入到客户表中。可能您必须更改/重建架构以反映映射更改。