Java spring JPA将在API请求中发布
在这里,我尝试使用findby函数从mysql db中逐行获取数据,它工作正常,但下一步我尝试访问API,通过httpJava 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
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更新了我的问题