如何解决使用Spring JPA / Hibernate实体将列表中的值与输入的字符串值进行比较
我遇到一种情况,我试图将输入的String值与我的List中的一个值进行比较,该List是一个ForecastTypes列表(我的实体)。我要击中的表没有主键,这超出了我的控制范围,因此我试图通过oracledb通过行号功能建立唯一键。当我运行程序并将输入的字符串值与包含通过我的实体检索的值的列表进行比较时,当它们匹配时(例如-字符串输入值为THANKSGIVING,而我的ForecastTypes列表中的值为THANKSGIVING),它仍返回false而不是true并填充错误,而不是返回true。我正在尝试将输入的字符串值“ value”与在ForecastTypes实体中指定的“ forecastName”列名称进行比较。我不确定在这里做错了什么,因为我正在使用contains()方法来查看我的ForecastList是否包含作为输入值的String值。有什么建议吗?我正在使用Java 8 EE,Spring,JPA和Hibernate。我还有其他方法可以在应用程序中使用相同的模式正常工作,我只是尝试深入研究此特定功能,并删除了这些功能以提高可读性。任何帮助将不胜感激。下面是我的代码,注释中将告诉您我要实现的功能以及它们所属的类,等等。
//全局
ActionT
//布尔值检查我的Validator.java类
fcstList = OracleImpl.forecastIDList();
//为验证器类中的无效预测ID添加错误的方法
public static boolean isForecastIDValid(String value,List<ForecastTypes> fcstList) {
value = Util.getTrimmedValue(value);
forecastList = fcstList;
if (forecastList.contains(value)) {
return true;
}
return false;
}
我的query.properties文件中的// query属性
fc.forEach(fc -> {
if (fc.getErrorList().size() == 0) {
if (!isForecastIDValid(fc.getForecast_ID(),fcstList)) {
fc.getErrorList().add(Constants.FORECAST_ID_INVALID);
}
}
});
//我的实体:
isForecastIDValid = SELECT ROW_NUMBER() OVER( ORDER BY ID DESC ) row_num,ID,TYPE FROM SCHEMA.FCSTIDS
/// OracleImpl类中的Oracle实体管理工厂执行
package com.lance.db.oracle.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Column;
@Entity
public class ForecastTypes {
@Id
@Column(name="row_num")
String rowNumber;
public String getRowNumber() {
return rowNumber;
}
public void setRowNumber(String rowNumber) {
this.rowNumber = rowNumber;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Column(name="TYPE")
String type;
@Column(name="ID")
String forecastName;
public String getForecastName() {
return forecastName;
}
public void setForecastName(String forecastName) {
this.forecastName = forecastName;
}
}
解决方法
问题出在您的Validator.java类中。您正在将String对象与ForecastTypes对象进行比较,但这永远不会匹配。
换句话说,您的ForecastTypes列表永远不能包含(“ .contains”)字符串对象,因为它是ForecastTypes列表(List)。
它应该像这样工作-通过比较String和String:
public function nonAcceptedContracts()
{
return $this->belongsToMany(UserContract::class,'invite','email','usercontract','email')->where('status','pending');
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。