繁体   English   中英

由于生成的值,字段“id”没有默认值

[英]Field 'id' doesn't have a default value because of generated value

我的实体

FoodItem.java

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@Setter
@Getter
@Table(name = "food_items", schema = "restaurant-service")
@FieldDefaults(level = AccessLevel.PRIVATE)
public class FoodItem {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;

    String name;

    BigDecimal price;

    Long restaurant_id;

}

餐厅.java

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@Setter
@Getter
@Table(name = "restaurant", schema = "restaurant-service")
@FieldDefaults(level = AccessLevel.PRIVATE)
public class Restaurant {

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

    String name;

    String address;

    BigDecimal priceForDelivery;

    @OneToMany
    @JoinColumn(name = "restaurant_id")
    List<FoodItem> menu;
}

Controller

 @PostMapping(value = "/restaurant/{restaurantId}/item")
    public void createRestaurant(@PathVariable(value = "restaurantId")Long restaurantId,
                                 @RequestBody FoodItem foodItemRequest) {
        repository.findById(id).map(restaurant -> restaurant.getMenu().add(foodItemRequest));
    FoodItem foodItem = FoodItem.builder()
            .name(foodItemRequest.getName())
            .price(foodItemRequest.getPrice())
            .restaurant_id(id)
            .build();
    foodItemRepository.save(foodItem);
    }

我只需要在 controller 中保存食品而不发布 ID,我需要在没有我的情况下生成 ID

我试图将策略更改为 AUTO,但仍然没有用

字段“id”没有默认值 2022-12-06 15:31:31.202 错误 39652 --- [nio-8080-exec-2] oac.c.C.[.[.[/].[dispatcherServlet] : servlet [dispatcherServlet] 的 Servlet.service() 在路径 [] 的上下文中抛出异常 [请求处理失败; 嵌套异常是 org.springframework.orm.jpa.JpaSystemException: 无法执行语句; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement] with root cause java.sql.SQLException: Field 'id' doesn't have a default value at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java :129) ~[mysql-connector-j-8.0.31.jar:8.0.31] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.31.jar: 8.0.31] at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.31.jar:8.0.31] at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement. java:1061) ~[mysql-connector-j-8.0.31.jar:8.0.31] 在 com.mysql.cj.jdbc.ClientPrep aredStatement.executeUpdateInternal(ClientPreparedStatement.java:1009) ~[mysql-connector-j-8.0.31.jar:8.0.31] at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1320) ~[mysql-connector-j -8.0.31.jar:8.0.31] at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:994) ~[mysql-connector-j-8.0.31.jar:8.0.31] at com.zaxxer.hikari.pool .ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:na] at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:na] at org .hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] 在org.8 8398379930688.dialect.identity.GetGeneratedKeysDelegate.executeAndExtract(GetGeneratedKeysDelegate.java:58) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate .java:43) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] 在 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.8821324:92788) 5.6.12.Final.jar:5.6.12.Final] 在 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3885) ~[hibernate-core-5.6.10.Final8.815:5.6.12.Final8.882 .Final] 在 org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:84) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] 在 org.8983906spi387.8993906 .ActionQueue.execute(ActionQueue.java:645)~[hibernate-core-5.6.12.Final.882028 78901088:5.6.12.Final] 在 org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:282) ~[hibernate-core-5.6.12.Final.jar.5.6.12] 在 org hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263) ~[休眠核心-5.6.12.Final.jar:5.6.12.Final] 在 org.hibernate.engine.QuespiAction.Action .java:317) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] 在 org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.8821hibercore582869)[AbstractSaveEventListener.8821hibercore582869] 5.6.12.Final.jar:5.6.12.Final] at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:287) ~[hibernate-core-5.6.12.Final.jar:5.6.12 .Final] 在 org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193) ~[hibernate-core- 5.6.12.Final.jar:5.6.12.Final] at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:123) ~[hibernate-core-5.6.12.Final.jar:5.6.12 .Final] 在 org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] 在 org3876.89939 .DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] 在 org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107)~[hibernate-core-5.6.12 .Final.jar:5.6.12.Final] 在 org.hibernate.i nternal.SessionImpl.firePersist(SessionImpl.java:756)~[hibernate-core-5.6.12.Final.jar:5.6.12.Final] 在org.hibernate.internal.SessionImpl.persist(SessionImpl.88745828~88745328) [hibernate-core-5.6.12.Final.jar:5.6.12.Final] 在 java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na8.base2958]38 java:104) /java.lang.reflect.Method.invoke(Method.java:577) ~[na:na] at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) ~[spring-orm-5.3. 23.jar:5.3.23] 在 jdk.proxy2/jdk.proxy2.$Proxy98.persist(未知来源)~[na:na] 在 java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.88104886:89415888) ~[na:na] 在 java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na ] at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) ~[spring-orm-5.3.23.jar:5.3.23] at jdk.proxy2/jdk.proxy2.$Proxy98.persist(Unknown Source ) ~[na:na] 在 org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:666) ~[spring-data-jpa-2.7.5.jar:2.7.5] 在 882138284base.6945 /jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] 在 java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na]在 org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:289) ~[spring-data-commons-2.7.5.jar:2.7.5] 在 org.springframework.data .repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInv oker.java:137) ~[spring-data-commons-2.7.5.jar:2.7.5] 在 org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data -commons-2.7.5.jar:2.7.5] 在 org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:530) ~[spring-data-commons-2.7.5.jar:2.7. 5] 在 org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:286) ~[spring-data-commons-2.7.5.jar:2.7.5] 在 org.springframework.data.repository。 core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:640) ~[spring-data-commons-2.7.5.jar:2.7.5] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186 ) ~[spring-aop-5.3.23.jar:5.3.23] 在 org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:164)~[spring-data-commons-2.7.5.jar:2.7.5] 在 org.springframework.data.repository.core。支持.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) ~[spring-data-commons-2.7.5.jar:2.7.5] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.869483spring)2.7.5.jar:2.7.5] -aop-5.3.23.jar:5.3.23] 在 org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81) ~[spring-data-commons-2.7.5.88202878:89010frame] 或 spring.5spring.5frame .aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] 在 org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(Trans Action Interpector.java:123) .23] 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation .java:186) ~[spring-aop-5.3.23.jar:5.3.23] 在 org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx388.5892.3.20 23] 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] 在 org.springframework.data.jpa.repository.support .CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:174) ~[spring-data-jpa-2.7.5.jar:2.7.5] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[ spring-aop-5.3.23.jar:5.3.23] 在 org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23] 在 org aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy1358 ~[spring-aop-5.3.23.jar:5.3.23] -aop-5.3.23.jar:5.3.23] 在 jdk.proxy2/jdk.proxy2.$Proxy101.save(未知来源)~[na:na] 在 com.lidapopova.restarauntservice.service.RestaurantService.addFoodItem(RestaurantService.88215882469 : 73) ~[类/:na] 在 com.lidapopova.restarauntservice.controller.RestaurantController.createRestaurant(RestaurantController.java:57)~[类/:na] 在 java.base/jddirectorAflectk.internal. DirectMethodHandleAccessor.java:104) ~[na:na] 在 java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na] 在 org.springframework.8836550868support.88.method. InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web -5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] at org .springframework.web.servlet .mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandLermethod(requestMappingMappingHandlerAdapter.java8888888888888888:895) RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3 .23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet .doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-w ebmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http. HttpServlet.service(HttpServlet.java:696) ~[tomcat-embed-core-9.0.68.jar:4.0.FR] 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.88213246945883m)vc[8821324694588] -5.3.23.8823.jar:5.3.23] .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.68.jar:9.0.68] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-嵌入核心 9.0.68.jar:9.0.68] 在 org.apache.tomcat.websocket.server.Ws Filter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.68.jar:9.0.68] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.8892138 ~[ApplicationFilterChain.8892138] -core-9.0.68.jar:9.0.68] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.88202878:89.010gwork] 或.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[ spring-web-5.3.23.jar:5.3.23] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.8820287890] 或apache.catalina.core.ApplicationFilterChain.doFilter(应用 nFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.23.jar :5.3.23] at org.springframework.web.filter.onceperrequestfilter.dofilter(Anmerrequestfilter.java:117) (ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.68.jar:9.0.68] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.8821324 ~cattom-core-)8 9.0.68.jar:9.0.68] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter. OncePerRequestFilter.doFilter(OncePerRequestFilter.882 13246945888:117) .68] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.68.jar:9.0.68] 在 org.8835283.960208 (StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.68.jar:9.0.68] 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.882138284:6945) 9.0.68.jar:9.0.68] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.68.jar:9.0.68] at org.apache.catalina. core.StandardHostValve.invoke(StandardHostValve.java:135)~[tomcat-embed-core-9.0.68.jar:9。 0.68] 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.68.jar:9.0.68] 在 org.apache. StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.68.jar:9.0.68] 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) .68.jar:9.0.68] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) ~[tomcat-embed-core-9.0.68.jar:9.0.68] at org.apache.coyote.AbstractProcessorLight .process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.68.jar:9.0.68] 在 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.8821538249)[AbstractProtocol.88215382869] core-9.0.68.jar:9.0.68] 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint t.java:1789) ~[tomcat-embed-core-9.0.68.jar:9.0.68] 在 org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.88213248:64958)0 .68.jar:9.0.68] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.68.jar:9.0.68] at org.apache.tomcat.util.threads .ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.68.jar:9.0.68] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.68.jar:9.0.68] 在 java.base/java.lang.Thread.run(Thread.java:833)~[na:na]

如果您的 MySQL 表必须支持 IDENTITY 主键生成策略,您必须使用 auto_increment 创建主键。

例子:

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);

IDENTITY 意味着数据库将负责主键的生成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM