[英]JPA Integer conversion to String for MySQL query
我必須編寫一個JPA查詢以選擇MySQL數據庫中的數據。
我有這部分代碼:
SELECT NEW com.fiat.sc.um.mdm.bean.Vendor
(e.fgpVndrNumber, e.companyName1, e.vndrCountry,
e.city, e.postalCode, e.street, e.vatRegistrNum,
e.vendorTypeDesc, e.companyName2, e.taxNumber2,
e.taxNumber1, e.organizationCode)
FROM ScVendor e
我想添加以下where子句:
WHERE str(e.fgpVndrNumber) LIKE '%123%'
要么
to_char(e.fgpVndrNumber) LIKE '%123%'
簡而言之,我必須將String轉換為Integer。
但是我得到一個錯誤。
有什么建議嗎?
編輯
這是完整的Java代碼:
String selAndForm = "SELECT NEW com.fiat.sc.um.mdm.bean.Vendor(e.fgpVndrNumber, e.companyName1, e.vndrCountry,"
+ " e.city, e.postalCode, e.street, e.vatRegistrNum, e.vendorTypeDesc, e.companyName2, e.taxNumber2, "
+ "e.taxNumber1, e.organizationCode) FROM ScVendor e ";
String where = null;
if (isNotNull(companyName)) {
if (searchCriteriaCompName != null) {
if (searchCriteriaCompName.equals("contains")) {
companyName = "%" + companyName + "%";
}
if (searchCriteriaCompName.equals("startWith")) {
companyName = companyName + "%";
}
if (searchCriteriaCompName.equals("endWith")) {
companyName = "%" + companyName;
}
}
if (where == null) {
where = "WHERE lower(e.companyName1) like '" + companyName.toLowerCase() + "'";
} else {
where = where + " AND lower(e.companyName1) like '" + companyName.toLowerCase() + "'";
}
}
if (isNotNull(immediateParent)) {
if (searchCriteriaParentCode != null) {
if (searchCriteriaParentCode.equals("contains")) {
immediateParent = "%" + immediateParent + "%";
}
if (searchCriteriaParentCode.equals("startWith")) {
immediateParent = immediateParent + "%";
}
if (searchCriteriaParentCode.equals("endWith")) {
immediateParent = "%" + immediateParent;
}
if (searchCriteriaParentCode.equals("equals")) {
// do nothing
}
}
if (where == null) {
where = "WHERE e.immediateParent LIKE '" + immediateParent + "'";
} else {
where = where + " AND e.immediateParent LIKE '" + immediateParent + "'";
}
}
if (isNotNull(supplierCode)) {
logger.debugT("supplierCode=" + supplierCode);
if (searchCriteriaParentCode != null) {
if (searchCriteriaSuppCode.equals("contains")) {
supplierCode = "%" + supplierCode + "%";
}
if (searchCriteriaSuppCode.equals("startWith")) {
supplierCode = supplierCode + "%";
}
if (searchCriteriaSuppCode.equals("endWith")) {
supplierCode = "%" + supplierCode;
}
if (searchCriteriaSuppCode.equals("equals")) {
// do nothing
}
}
if (where == null) {
where = "WHERE e.fgpVndrNumber.toString() like '" + supplierCode + "'";
} else {
where = where + " AND e.fgpVndrNumber.toString() like '" + supplierCode + "'";
}
}
StringBuffer SQL = new StringBuffer();
SQL.append(selAndForm);
SQL.append(where);
SQL.append(" AND e.deletedAt IS NULL");
logger.debugT(SQL.toString());
Query query = eManager.createQuery(SQL.toString());
fgpVendorNumber是一個整數。 我想將其轉換為字符串。
搜索部分號碼不需要顯式轉換。
以下查詢格式應該沒有語法或邏輯錯誤。
select ...
from ...
where e.fgpVndrNumber like '%123%'
嘗試將整數與JPA JPQL中的字符串進行比較會導致錯誤。
我能夠將Integer轉換成可以進行比較的String:
WHERE substring(xInteger, 0) like '%stringFilter%'
我可以在我的JPA查詢中使用TRIM:
WHERE TRIM(e.fgpVndrNumber as varchar) LIKE '%123%'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.