在做一个存入表测试的时候,报如下错误
org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save(): com.lzy.weixinsell.dataobject.ProductInfo; nested exception is org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.lzy.weixinsell.dataobject.ProductInfo
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:333)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:503)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:209)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:133)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
表的主键不是自增的。
测试代码如下
@Test
public void saveTest(){
ProductInfo productInfo = new ProductInfo();
productInfo.setProductIcon("123456");
productInfo.setProductName("皮蛋粥");
productInfo.setProductPrice(new BigDecimal(5));
productInfo.setProductStock(100);
productInfo.setProductDescription("很好喝的粥");
productInfo.setProductIcon("http://xxxx.jpg");
productInfo.setProductStatus(0);
productInfo.setCategoryType(2);
ProductInfo result= repository.save(productInfo);
Assert.assertNotNull(result);
}
表结构
然后在测试代码添加了id,则报错解决。修改后
@Test
public void saveTest(){
ProductInfo productInfo = new ProductInfo();
productInfo.setProductId("1");
productInfo.setProductIcon("123456");
productInfo.setProductName("皮蛋粥");
productInfo.setProductPrice(new BigDecimal(5));
productInfo.setProductStock(100);
productInfo.setProductDescription("很好喝的粥");
productInfo.setProductIcon("http://xxxx.jpg");
productInfo.setProductStatus(0);
productInfo.setCategoryType(2);
ProductInfo result= repository.save(productInfo);
Assert.assertNotNull(result);
}