`

JPA一对多的SQL语法的写法

    博客分类:
  • JPA
阅读更多
1.前提Scene.java:一个Scene对多个SceneVideo
@OneToMany(mappedBy = "scene", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<SceneVideo> sceneVideoCollection = new HashSet<SceneVideo>();

 

2.SQL语句不正确的写法:
String strQuery = "select distinct s from Scene s ";
if (quality != null && !"".equals(quality)){
   strWhere = " where s.sceneVideoCollection.videoUrl like '%"+ quality +"%' or s.sceneVideoCollection.playlistFile like '%"+ quality +"%'";
}
错误的原因是:一个Scene对多个SceneVideo,而这里用sceneVideoCollection.videoUrl肯定是不对啦,这里是对多个sceneVideoCollection的,那它的videoUrl就对不少号啦!!!

 

3.正确的SQL写法:
String strQuery = "select distinct s from Scene s inner join s.sceneVideoCollection sv";
if (quality != null && !"".equals(quality)){
   strWhere = " where sv.videoUrl like '%"+ quality +"%' or sv.playlistFile like '%"+ quality +"%'";
}

 

分享到:
评论

相关推荐

    JPA的JPQL语法总结

    ### JPA的JPQL语法总结 #### 基础概念 Java Persistence Query Language(JPQL)是Java Persistence API(JPA)中用于执行查询的一种语言。它与SQL非常相似,但更加面向对象,允许开发者使用实体类而不是表来编写...

    Spring JPA学习

    JPQL(Java Persistence Query Language)是一种面向实体的查询语言,它提供了类似于SQL的语法,但更加面向对象。JPQL是强类型的,这意味着每个表达式都有明确的类型,这种特性有助于减少运行时错误。 #### 2. XML ...

    jpa查询[借鉴].pdf

    JPA 提供了一种面向对象的方式来查询数据,使得开发者无需直接编写SQL,而是使用更直观、面向对象的查询语言,这被称为JPQL(Java Persistence Query Language)。在JPA中,查询语言的语法设计是为了与对象模型紧密...

    HQL的几钟常见写法

    HQL(Hibernate Query Language)是Hibernate框架提供的一种查询语言,它支持面向对象的语法结构,并且能够很好地与Java对象模型进行映射。通过HQL,开发者可以更加灵活地操作数据库中的数据,而无需直接编写SQL语句...

    支持多数据库的ORM框架ef-orm.zip

    基于轻量级Criteria API的操作方式,使得对数据库的变更和重构变得非常轻松,解决了SQL语句多对软件维护和移植造成产生的不利影响。 阅读推荐:第3、4章 特点二,将SQL的使用发挥到极致,解决SQL拼凑问题、...

    使用 Example 类 实现MySQL一个搜索框对多个字段的模糊查询

    在MyBatis中,`Example`类是一个非常实用的工具,尤其在进行...而直接编写SQL语句的方式则更为直观,适用于对SQL语法有深入理解的开发者。两者各有优缺点,根据项目需求和个人喜好,可以选择适合的方法进行数据库查询。

    hibernate映射配置文件不支持union联合查询[参照].pdf

    具体表现为在执行查询时抛出了`SQLGrammarException`,提示为`ORA-00907: 缺失右括号`,这通常意味着SQL语句中的语法错误,可能是括号没有正确配对。 首先,让我们深入理解问题的根源。Hibernate是Java平台上的一个...

    Hibernate学习笔记

    这种技术的主要目的是简化数据库访问逻辑,使得开发者可以直接用面向对象的方式来处理数据而无需关心底层的SQL语法。 常见的ORM框架包括: - **Hibernate**:一个流行的Java ORM框架,它能够自动生成所需的SQL语句...

Global site tag (gtag.js) - Google Analytics