Java Hibernate OneToMany MapSpring错误列不能为空

Java Hibernate OneToMany MapSpring错误列不能为空,java,hibernate,orm,one-to-many,hibernate-mapping,Java,Hibernate,Orm,One To Many,Hibernate Mapping,我在公司和产品实体之间建立了一家公司关系,如下所示。当我试图保存公司实例时,抛出错误列公司不能为空。company列上有一个约束,它不能为空。但是为什么它是空的呢?我错过了什么 Product.java @Entity @Table(name="product") public class Product { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int id; @Column(name="name") p

我在
公司
产品
实体之间建立了一家公司关系,如下所示。当我试图保存
公司
实例时,抛出错误
列公司不能为空
company
列上有一个约束,它不能为空。但是为什么它是空的呢?我错过了什么

Product.java

@Entity
@Table(name="product")
public class Product {

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

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

@ManyToOne
@JoinColumn(name="company")
private Company company;

public Company getCompany() {
    return company;
}

public void setCompany(Company company) {
    this.company = company;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
}
Company.java

@Entity
@Table(name="manufacturer")
public class Company {

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

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

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

public List<Product> getProducts() {
    return products;
}

public void setProducts(List<Product> products) {
    this.products = products;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
}
@实体
@表(name=“制造商”)
公营公司{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私有int-id;
@列(name=“name”)
私有字符串名称;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“公司”)
私人上市产品;
公共列表产品(){
退货产品;
}
公共产品(列出产品){
这一点。产品=产品;
}
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
}
java

        session = sessionFactory.openSession();
        Transaction tx = session.beginTransaction();
        Product shoes = new Product();
        shoes.setName("Shoes");
        Product tshirt = new Product();
        tshirt.setName("T-shirt");
        Product gloves = new Product();
        gloves.setName("Gloves");
        List<Product> products = new ArrayList<>();
        products.add(shoes);
        products.add(tshirt);
        products.add(gloves);
        Company addidas = new Company();
        addidas.setName("Adiddas");
        addidas.setProducts(products);
        session.save(addidas);
        tx.commit();
session=sessionFactory.openSession();
事务tx=会话.beginTransaction();
产品鞋=新产品();
鞋。设置名称(“鞋”);
产品T恤=新产品();
tshirt.setName(“T恤”);
产品手套=新产品();
手套。设置名称(“手套”);
列表产品=新的ArrayList();
产品。添加(鞋);
产品。添加(T恤);
产品。添加(手套);
公司addidas=新公司();
addidas.setName(“阿迪达斯”);
addidas.setProducts(产品);
session.save(addidas);
tx.commit();
错误:“公司”列不能为空 线程“main”org.hibernate.Exception.ConstraintViolationException中出现异常:无法执行语句 位于org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59) 位于org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42) 位于org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111) 位于org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:97) 位于org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:207) 位于org.hibernate.dialogue.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:57) 位于org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:42) 位于org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2840) 位于org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3411) 在org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81) 在org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:619) 位于org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:273) 位于org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:254) 位于org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:299) 位于org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:318) 位于org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:275) 位于org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:182) 位于org.hibernate.event.internal.AbstractSaveEventListener.SaveWithGenerateId(AbstractSaveEventListener.java:113) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192) 位于org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177) 位于org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:97) 位于org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73) 位于org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:644) 位于org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:636) 位于org.hibernate.engine.spi.CascadingActions$5.cascade(CascadingActions.java:219) 位于org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:391) 位于org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:316) 位于org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:155) 位于org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:424) 位于org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:356) 位于org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:319) 位于org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:155) 位于org.hibernate.engine.internal.Cascade.Cascade(Cascade.java:104) 位于org.hibernate.event.internal.AbstractSaveEventListener.CascadeAftSave(AbstractSaveEventListener.java:445) 位于org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:281) 位于org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:182) 位于org.hibernate.event.internal.AbstractSaveEventListener.SaveWithGenerateId(AbstractSaveEventListener.java:113) 在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192) 位于org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38) 位于org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(默认值