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(默认值