Java 语法错误Hibernate-意外标记:ON
我有三张桌子: 摄像头-[id、地址、城市、url、服务器名称,…] vlc-[id,摄像机id(等于摄像机中的id),服务器名称,端口,状态] 类别-[id,名称] Hear是我的MySQl语法,它给了我很好的结果:Java 语法错误Hibernate-意外标记:ON,java,mysql,hibernate,spring-mvc,Java,Mysql,Hibernate,Spring Mvc,我有三张桌子: 摄像头-[id、地址、城市、url、服务器名称,…] vlc-[id,摄像机id(等于摄像机中的id),服务器名称,端口,状态] 类别-[id,名称] Hear是我的MySQl语法,它给了我很好的结果: "SELECT vlc.camera_id, vlc.url, vlc.port," + " vlc.server_name, cameras.address, cameras.city, categories.name FROM vlc AS vlc" + " INNER
"SELECT vlc.camera_id, vlc.url, vlc.port,"
+ " vlc.server_name, cameras.address, cameras.city, categories.name FROM vlc AS vlc" +
" INNER JOIN cameras ON vlc.camera_id = cameras.id" +
" INNER JOIN categories ON cameras.category_id = categories.id"
+ " WHERE vlc.status = 'active' AND ")
但在Hibernate中,我遇到了以下语法错误:
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ON near line 1, column 141
有人能帮忙吗?我知道这可能是显而易见的,但我找不到解决办法
编辑:
我改为:
@SuppressWarnings("unchecked")
public List<VLC> getVLCs() {
return getCurrentSession().createSQLQuery("SELECT vlc.camera_id, vlc.url, vlc.port,"
+ " vlc.server_name, cameras.address, cameras.city, categories.name FROM vlc AS vlc" +
" INNER JOIN cameras ON vlc.camera_id = cameras.id" +
" INNER JOIN categories ON cameras.category_id = categories.id"
+ " WHERE vlc.status = 'active'").list();
}
我必须改变我的类中的某些内容,而不是使用
createSQLQuery
。
第二种是HQL(Hibernate查询语言)而不是SQL
UPD:
使用SQL hibernate无法将接收到的数据包装到对象。这就是为什么你必须使用
例如:
公共列表getVLCs(){
返回getCurrentSession().createQuery(“从Cat作为Cat内部连接获取Cat.mate左连接获取Cat.kittens”).list();
}
如果Cat是映射到表的类您将其更改为本机SQL,但您正在使用VLC和摄影机对象的属性进行投影,则需要将select限制为VLC对象,以便Hibernate知道如何将请求的属性列表映射到VLC对象,或者通过接收对象[]列表,然后自己选择每个值来显式地转换它们。是否尝试使用本机查询或HQL?显示使用此查询的位置。请确保您使用的是
createSQLQuery
方法,而不是createQuery
可能是HQL语句扫描您,请提供更多的代码来为您编写答案。它们之间的区别是什么??HQL-对于映射到表的对象,SQL用于表。
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to pl.humandevice.model.VLC
public List<VLC> getVLCs() {
return getCurrentSession().createQuery("from Cat as cat inner join fetch cat.mate left join fetch cat.kittens").list();
}