Java spring JPA将在API请求中发布

Java spring JPA将在API请求中发布,java,spring,spring-boot,spring-data-jpa,http-headers,Java,Spring,Spring Boot,Spring Data Jpa,Http Headers,在这里,我尝试使用findby函数从mysql db中逐行获取数据,它工作正常,但下一步我尝试访问API,通过httpPOST将表中所需的数据填充到API中,并将processDate更改为当前日期,但是当我尝试实现commandlineruner 错误: java.lang.IllegalStateException:未能执行CommandLineRunner, 原因:java.lang.IllegalMonitorStateException:null API格式如下所示: { "Cha

在这里,我尝试使用findby函数从mysql db中逐行获取数据,它工作正常,但下一步我尝试访问API,通过http
POST
将表中所需的数据填充到API中,并将
processDate
更改为当前日期,但是当我尝试实现
commandlineruner

错误:

java.lang.IllegalStateException:未能执行CommandLineRunner, 原因:java.lang.IllegalMonitorStateException:null

API格式如下所示:

{
  "ChannelID":"113", # static string no change on it
  "MSISDN":"XXX", # i have to fill it wil my msisdn 
  "ServiceID":"XXX" i have to fill it with my param1
}
访问DataJPA应用程序类:

@SpringBootApplication
public class AccessingDataJpaApplication implements CommandLineRunner {

    private static final Logger logger = LoggerFactory.getLogger(AccessingDataJpaApplication.class);
    @Autowired

    private Bulk_repositoryRepository bulk_repositoryRepository;

    public static void main(String[] args) {
        SpringApplication.run(AccessingDataJpaApplication.class);
    }
    Date currentDate = new Date();

    @Override
    public void run(String... args) throws Exception {
         RestTemplate restTemplate = new RestTemplate();
         HttpHeaders headers = new HttpHeaders();
         headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
         headers.setBasicAuth("######", "#####");

         while(true) {

            for (Bulk_repository churnss : bulk_repositoryRepository.findAllByStatusAndCampTypeAndCampStartDateLessThanAndCampEndDateGreaterThanEqual(0,54,currentDate,currentDate)) {
                logger.info(churnss.toString());
                AddOfferRequest AddOffer = new AddOfferRequest("113", churnss.getMsisdn(),churnss.getParam1());

                logger.info(AddOffer.toString());
                HttpEntity<AddOfferRequest> entity = new HttpEntity<AddOfferRequest>(AddOffer,headers);

                ResponseEntity<String> responseEntity = restTemplate.exchange(
                "API LINK.......", HttpMethod.POST, entity, String.class);

                if(responseEntity.getStatusCode() == HttpStatus.OK){
                    String response = responseEntity.getBody();
                    logger.info(response);

                    churnss.setStatus(1);
                    churnss.setProcessDate(new Date());
                    logger.info(churnss.toString());
                    bulk_repositoryRepository.save(churnss);
                }
            }
            wait(1000);
        }
    }
}
批量存储库类:

@Entity
@Table(name = "BULK_REPOSITORY")
public class Bulk_repository {

   @Id
   @GeneratedValue(strategy=GenerationType.AUTO)
   @Column(name = "id")
   private long id;

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

   @Column(name = "camp_start_date")   
   private Date campStartDate;

   @Column(name = "camp_end_date")
   private Date campEndDate;

   @Column(name = "camp_type")
   private int campType;

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

   @Column(name = "status")
   private int status;

   @Column(name = "process_date")
   private Date processDate;

   @Column(name = "entry_date")
   private Date entryDate;

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

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

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

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

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

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

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

   @Column(name = "fulfilment_status")
   private int fulfilment_status;
## then getter and setters and to tostring
public interface Bulk_repositoryRepository extends CrudRepository<Bulk_repository, Long> {
      List<Bulk_repository>findAllByStatusAndCampTypeAndCampStartDateLessThanAndCampEndDateGreaterThanEqual(int status, int campType,Date currentDate, Date currentDate1);

      Bulk_repository findById(long id);
}
大容量存储库存储库类:

@Entity
@Table(name = "BULK_REPOSITORY")
public class Bulk_repository {

   @Id
   @GeneratedValue(strategy=GenerationType.AUTO)
   @Column(name = "id")
   private long id;

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

   @Column(name = "camp_start_date")   
   private Date campStartDate;

   @Column(name = "camp_end_date")
   private Date campEndDate;

   @Column(name = "camp_type")
   private int campType;

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

   @Column(name = "status")
   private int status;

   @Column(name = "process_date")
   private Date processDate;

   @Column(name = "entry_date")
   private Date entryDate;

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

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

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

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

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

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

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

   @Column(name = "fulfilment_status")
   private int fulfilment_status;
## then getter and setters and to tostring
public interface Bulk_repositoryRepository extends CrudRepository<Bulk_repository, Long> {
      List<Bulk_repository>findAllByStatusAndCampTypeAndCampStartDateLessThanAndCampEndDateGreaterThanEqual(int status, int campType,Date currentDate, Date currentDate1);

      Bulk_repository findById(long id);
}

要使Object.wait()正常工作,您需要处于同步块中。它在多线程环境中用于同步线程。但我假设您只是想让代码在记录最新结果之间等待一段时间


改用
Thread.sleep(1000)

你能发布stacktrace让我看看问题发生在哪里吗?@SimonMartinelli我已经用stacktrace更新了我的问题