我想用spring boot api访问数据库中的一个函数,并获取它返回的值。当我们在swagger中输入参数时,日期部分会出现错误。
2021 4月1日,我在oracle中调用函数的日期参数时,没有错误,但我无法从spring开始以这种方式发送。
Oracle功能代码:
CREATE OR REPLACE PACKAGE BODY MET.Z_PKG_OEE_NEW
FUNCTION Z_OEE_A1AfterReworkRatio(V_plant_config_num_id IN number, p_start_date in date, p_stop_date in date) RETURN NUMBER IS
v_result NUMBER;
p_cur001 SYS_REFCURSOR;
BEGIN
Z_OEE_A1AfterReworkRatio_Detail(V_plant_config_num_id,p_start_date,p_stop_date,p_cur001, v_result);
RETURN round(v_result,4);
END Z_OEE_A1AfterReworkRatio;
end;
ooeController:
@RestController
@RequestMapping("/api/oeeReports")
@CrossOrigin
public class OeeController {
private OeeReportService oeeReportService;
@Autowired
public OeeController(OeeReportService oeeReportService) {
this.oeeReportService=oeeReportService;
}
@GetMapping("A1AfterReworkRatio")
BigDecimal A1AfterReworkRatio(@RequestParam int V_plant_config_num_id, @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date p_start_date ,@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date p_stop_date) {
return this.oeeReportService.A1AfterReworkRatio( V_plant_config_num_id , p_start_date, p_stop_date);
}
}
其他服务:
@Service
public class OeeReportManager implements OeeReportService {
private OeeDao oeeDao;
@Autowired
public OeeReportManager(OeeDao oeeDao) {
super();
this.oeeDao=oeeDao;
}
@Override
public BigDecimal A1AfterReworkRatio(int V_plant_config_num_id, Date p_start_date, Date p_stop_date) {
// TODO Auto-generated method stub
return this.oeeDao.A1AfterReworkRatio(V_plant_config_num_id, p_start_date, p_stop_date);
}
}
oeedao:
@Repository
public class OeeDao {
@Autowired
private EntityManager entitymanager;
public BigDecimal A1AfterReworkRatio(int V_plant_config_num_id,Date p_start_date,Date p_stop_date) {
BigDecimal commentCount = (BigDecimal) entitymanager
.createNativeQuery(
"SELECT Z_OEE_A1AfterReworkRatio(:V_plant_config_num_id:p_start_date:p_stop_date) FROM DUAL"
)
.setParameter("V_plant_config_num_id", V_plant_config_num_id).setParameter("p_start_date", p_start_date).setParameter("p_stop_date", p_stop_date)
.getSingleResult();
return commentCount;
}
}
昂首阔步:
错误:
{
"timestamp": "2021-08-26T07:00:23.487+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "org.springframework.dao.InvalidDataAccessApiUsageException: Could not locate named parameter [V_plant_config_num_id], expecting one of [V_plant_config_num_id:p_start_date:p_stop_date]; nested exception is java.lang.IllegalArgumentException: Could not locate named parameter [V_plant_config_num_id], expecting one of [V_plant_config_num_id:p_start_date:p_stop_date]\r\n\tat
如何解决这个问题?
根据https://www.baeldung.com/spring-date-parameters您可以在OeeController中用DateTimeFormat(iso=DateTimeFormat.iso.date)注释日期参数(来自:spring boot application{while creating beans error}):
@GetMapping("A1AfterReworkRatio")
int A1AfterReworkRatio(@RequestParam int V_plant_config_num_id,
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date p_start_date,
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date p_stop_date) {
return this.oeeReportService.A1AfterReworkRatio( V_plant_config_num_id , p_start_date, p_stop_date);
}
如果你通读它,上面的文章还描述了实现它的其他方法。
我有两个微服务是通过外国沟通。一个微服务公开另一个正在调用的方法。该方法将日期作为参数。 这是方法的代码: == 另一个微服务使用这个外来类来调用这个方法: == 我的代码正在启动此异常: 未能转换“java”类型的值。lang.String“to required type”java。util。日期';嵌套异常为org。springframework。果心转换ConversionFailedEx
我正在尝试使用Spring MVC、Java和MySql在我的网络应用程序中实现完整的日历插件。当我尝试在我的jsp中使用“输入类型=日期”添加日期时,我一直收到这个错误: 在我的控制器类中,我使用SimpleDateFormat格式化日期: 最后在我的Jsp中: 这是DAO实现: 在我的实体类中,我将变量保存为日期 我认为问题在于日期的解析,但我不确定!对此问题的任何解释都将不胜感激。
任务控制器 创造jsp 在控制器中,我用相同的错误(以及不同的格式,如“yyyy/MM/dd”)编写了以下内容 我还尝试在类中添加注释(以及使用不同的格式),但出现了相同的错误
我将客户数据对象存储为共享首选项(Android)中的JSON字符串,并尝试检索转换回客户对象的字符串并用于验证。从对象到JSON字符串的转换非常好,并且存储在首选项中(作为键值(字符串)对)。 当我尝试使用-我总是得到相同的错误值...类型java.lang.字符串不能转换为JSONObject。 我希望一双不同的眼睛能捕捉到我不能捕捉到的东西。带有数据的错误消息(屏蔽): Value 类型为j
我正在尝试将java Date转换为java LocalTime,我的代码如下所示 当我打印对话前后的日期时,看起来是这样的: 它看起来像是在向后转换,但我不知道怎么做!
在这里,我试图将数据发送到我的web服务器,并使用解析json并将数据插入mysql数据库。我得到一个错误,表示值stdClass为