簡體   English   中英

將JPA Integer轉換為String以進行MySQL查詢

[英]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%'

在MySql數據庫中使用強制轉換功能。

WHERE cast(e.fgpVndrNumber as varchar) LIKE '%123%'

也可以看看

MySql演員

嘗試將整數與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM