title: Save entity JPA with null id
body: <p>I am trying to create a function for registering a user.</p>
  <pre><code>@Service
  public class RegistrationService {
      private AccountRepository accountRepository;
      private UserRepository userRepository;
      private final Logger logger = LogManager.getLogger(RegistrationService.class);
      
      public Boolean createNewUser(Registration registration) {
          User user = new User();
          user.setUserName(registration.getUserName());
          user.setPassword(registration.getPassword());
          logger.info(&quot;attempting to create user: {}&quot;, user);
          
          try {
              userRepository.save(user);          
          } catch(Exception e) {
              logger.error(&quot;Failed to register user: {}&quot;, e.getStackTrace());
              return false;
          }
          
          Account account = new Account();
          account.setUserId(user.getId());
          account.setBillingAddress(registration.getBillingAddress());
          account.setBillingCountry(registration.getBillingCountry());
          account.setBillingProvince(registration.getBillingProvince());
          account.setPhoneNumber(registration.getPhoneNumber());
          account.setZip(registration.getZip());
          logger.info(&quot;attempting to create account: {}&quot;, account);
          
          try {
              account = accountRepository.save(account);          
          } catch(Exception e) {
              logger.error(&quot;Failed to register account: {}&quot;, e.getStackTrace());
              return false;
          }
          
          
          return true;
      }
  }
  </code></pre>
  <p>I followed the advice from this post: <a href="https://stackoverflow.com/questions/57507484/saving-null-as-id-with-hibernate">Saving null as id, with hibernate</a>, but the solution did not work for me.
  Here is my user class</p>
  <pre><code>package com.company.app.model;
  
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.Table;
  
  import lombok.Data;
  
  @Entity
  @Table(name=&quot;user&quot;)
  @Data
  public class User {
      
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      private Long id;
      
      private String userName;
  
      private String password;
  
      
      public Long getId() {
          return this.id;
      }
      
      public void setUserName(String userName) {
          this.userName = userName;
      }
      
      public String getUserName() {
          return this.userName;
      }
      
      public void setPassword(String password) {
          this.password = password;
      }
      
      public String getPassword() {
          return this.password;
      }
  }
  </code></pre>
  <p>Here is my account class</p>
  <pre><code>package com.company.app.model;
  
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.Table;
  
  import lombok.Data;
  
  @Entity
  @Table(name=&quot;account&quot;)
  @Data
  public class Account {
  
      @Id
      @GeneratedValue(strategy = GenerationType.IDENTITY)
      private Long id;
      
      private Long userId;
  
      private String billingAddress;
      
      private String billingProvince;
      
      private String billingCountry;
  
      private String phoneNumber;
  
      private String zip;
      
      public Long getId() {
          return this.id;
      }
      
      public void setUserId(Long userId) {
          this.userId = userId;
      }
  
      public Long getUserId() {
          return userId;
      }
  
      public String getBillingAddress() {
          return billingAddress;
      }
  
      public void setBillingAddress(String billingAddress) {
          this.billingAddress = billingAddress;
      }
  
      public String getBillingProvince() {
          return billingProvince;
      }
  
      public void setBillingProvince(String billingProvince) {
          this.billingProvince = billingProvince;
      }
  
      public String getBillingCountry() {
          return billingCountry;
      }
  
      public void setBillingCountry(String billingCountry) {
          this.billingCountry = billingCountry;
      }
  
      public String getPhoneNumber() {
          return phoneNumber;
      }
  
      public void setPhoneNumber(String phoneNumber) {
          this.phoneNumber = phoneNumber;
      }
  
      public String getZip() {
          return zip;
      }
  
      public void setZip(String zip) {
          this.zip = zip;
      }
  }
  
  </code></pre>
  <p>My log shows the following output</p>
  <pre><code>2021-04-14 14:40:09.265  INFO 15092 --- [nio-8080-exec-1] c.c.app.service.RegistrationService      : attempting to create user: User(id=null, userName=evan, password=test123)
  2021-04-14 14:40:09.266 ERROR 15092 --- [nio-8080-exec-1] c.c.app.service.RegistrationService      : Failed to register user: com.company.app.service.RegistrationService.createNewUser(RegistrationService.java:26)
  </code></pre>
  <p>Any help with this would be greatly appreciated. Here is the stack trace
  java.lang.IllegalArgumentException: Unknown return value type: org.springframework.http.HttpStatus
  at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:80) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:124) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:888) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.2.0.RELEASE.jar:5.2.0.RELEASE]
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:526) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_172]
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_172]
  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.27.jar:9.0.27]
  at java.lang.Thread.run(Thread.java:748) [na:1.8.0_172]</p>