Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java本机查询-com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException_Java_Jakarta Ee_Nativequery - Fatal编程技术网

Java本机查询-com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

Java本机查询-com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException,java,jakarta-ee,nativequery,Java,Jakarta Ee,Nativequery,我收到以下错误:“com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在“Card.findPrefix”附近使用的正确语法。” 用于: @命名请求({ @NamedNativeRequesty(name=“Card.findPrefix”, query=“选择不同的楼层(c .编号/10000),来自卡c) }) 公共列表findPrefix(){ 查询q

我收到以下错误:“com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在“Card.findPrefix”附近使用的正确语法。”

用于:
@命名请求({
@NamedNativeRequesty(name=“Card.findPrefix”,
query=“选择不同的楼层(c
.编号/10000),来自卡c)
})
公共列表findPrefix(){
查询q=em.createNativeQuery(“Card.findPrefix”);
试一试{
返回q.getResultList();
}捕获(例外情况除外){
例如printStackTrace();
返回null;
}
}

我不明白我的错误在哪里,因为当我直接向Mysql键入此查询时,它工作得非常好。

Use应该使用createNamedQuery,而不是createNativeQuery

createNativeQuery(字符串sqlString)

创建用于执行本机SQL语句的查询实例,例如,用于update或delete

createNamedQuery(字符串名称)

创建查询实例以执行命名查询(在Java持久性查询语言或本机SQL中)

因此,在您的代码中,您正在执行查询名称“Find…”作为SQL查询

正确的一个:

Query q = em.createNamedQuery("Card.findPrefix");

Use应使用createNamedQuery,而不是createNativeQuery

createNativeQuery(字符串sqlString)

创建用于执行本机SQL语句的查询实例,例如,用于update或delete

createNamedQuery(字符串名称)

创建查询实例以执行命名查询(在Java持久性查询语言或本机SQL中)

因此,在您的代码中,您正在执行查询名称“Find…”作为SQL查询

正确的一个:

Query q = em.createNamedQuery("Card.findPrefix");
最终代码为:

public List<Integer> findPrefix(){
        Query q = em.createNamedQuery("Card.findPrefix");
        List<Integer> res = new ArrayList<Integer>();
        for(Object row : (List<Object>) q.getResultList()){
            res.add(((BigInteger)row).intValue());
        }
        return res;
    }
    @NamedNativeQueries({
    @NamedNativeQuery(name = "Card.findPrefix",
            query = "SELECT DISTINCT(FLOOR(c.number/10000)) FROM Card c")
})
公共列表findPrefix(){
Query q=em.createNamedQuery(“Card.findPrefix”);
List res=new ArrayList();
对于(对象行:(列表)q.getResultList()){
res.add(((BigInteger)行).intValue());
}
返回res;
}
@命名请求({
@NamedNativeRequesty(name=“Card.findPrefix”,
query=“从卡片c中选择不同的(楼层(c.number/10000))
})
最终代码是:

public List<Integer> findPrefix(){
        Query q = em.createNamedQuery("Card.findPrefix");
        List<Integer> res = new ArrayList<Integer>();
        for(Object row : (List<Object>) q.getResultList()){
            res.add(((BigInteger)row).intValue());
        }
        return res;
    }
    @NamedNativeQueries({
    @NamedNativeQuery(name = "Card.findPrefix",
            query = "SELECT DISTINCT(FLOOR(c.number/10000)) FROM Card c")
})
公共列表findPrefix(){
Query q=em.createNamedQuery(“Card.findPrefix”);
List res=new ArrayList();
对于(对象行:(列表)q.getResultList()){
res.add(((BigInteger)行).intValue());
}
返回res;
}
@命名请求({
@NamedNativeRequesty(name=“Card.findPrefix”,
query=“从卡片c中选择不同的(楼层(c.number/10000))
})