相关疑难解决方法(0)

JPA Criteria Builder:如何将ArrayList传递给Oracle函数?

我有一个Oracle函数,它接受一个POINTS%ROWTYPE表.我想使用CriteriaBuilder类从JPA调用此函数,该类具有数据库函数的功能.当我尝试构建查询时,它会死于抱怨ArrayLists不是函数的有效查询参数.

如何将ArrayList中的ArrayList传入Oracle函数?

Oracle函数签名:

CREATE OR REPLACE FUNCTION LOCATION_CONTAINS
(
LATITUDE_IN IN DOUBLE PRECISION,
LONGITUDE_IN IN DOUBLE PRECISION,
points IN types_pkg.point_array,
numPoints IN INTEGER
) 
Run Code Online (Sandbox Code Playgroud)

Oracle类型:

create or replace package types_pkg
as
type point_array is table of FILTERPOINT%ROWTYPE;
end types_pkg;
Run Code Online (Sandbox Code Playgroud)

JPA Criteria Builder调用

List<FilterPoint> points = getPoints(location_name);
int numPoints = points.size();

Expression ex =
           cb.function( "LOCATION_CONTAINS",
           Integer.class,
           entity.get( "latitude" ),
           entity.get( "longitude" ),
           cb.literal( points ),
           cb.literal( numPoints ) );
Run Code Online (Sandbox Code Playgroud)

例外:

org.apache.openjpa.persistence.ArgumentException: 
The specified parameter of type "class middle.ware.FilterPoint" is not …
Run Code Online (Sandbox Code Playgroud)

java oracle plsql jpa openjpa

7
推荐指数
1
解决办法
744
查看次数

在prepare语句中传递数组参数 - 获取"java.sql.SQLFeatureNotSupportedException"

我在我的prepare语句中遇到错误java.sql.SQLFeatureNotSupportedException.我正在使用Mysql数据库.

以下是我的代码.

class tmp {
public static void main(String arg[]) {

    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(
                "jdbc:mysql://localhost/sample", "root", "root");
        PreparedStatement pst = conn
                .prepareStatement("select * from userinfo where firstname in(?)");

        String[] Parameter = { "user1", "Administrator" };
        Array sqlArray = conn.createArrayOf("VARCHAR", Parameter);
        pst.setArray(1, sqlArray);
        ResultSet rs = pst.executeQuery();
        while (rs.next()) {
            System.out.println(rs.getInt(1));
        }
    } catch (Exception e) {
        e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java mysql arrays jdbc prepared-statement

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

arrays ×1

jdbc ×1

jpa ×1

mysql ×1

openjpa ×1

oracle ×1

plsql ×1

prepared-statement ×1