标签: querydsl

如何在SpringData和QueryDsl中指定多列OrderSpecifier?这可能吗

所以我在下面有以下查询:

public Iterable<Dealer> findAll(Dealer dealer) {
    QDealer qdealer = QDealer.dealer;

    BooleanExpression where = null;
    if(dealer.getId() != null && dealer.getId() != 0) {
        buildPredicate(qdealer.id.goe(dealer.getId()));
    }

    OrderSpecifier<String> sortOrder = QDealer.dealer.dealerCode.desc();
    Iterable<Dealer> results = dlrRpstry.findAll(where, sortOrder); 
    return results;
}
Run Code Online (Sandbox Code Playgroud)

上面的查询工作正常.但是,我想首先按dealerType对结果进行排序,然后由dealerCode对结果进行排序,有点像"由dealerType asc,dealerCode desc订购".如何实例化OrderSpecifier,以便结果将按dealerType排序,然后按经销商代码排序.

DealerRepository dlrRpstry扩展了JpaRepository,QueryDslPredicateExecutor

我使用的是spring-data-jpa-1.1.0,spring-data-commons-dist-1.3.2和querydsl-jpa-2.9.0.

如果OrderSpecifier不能配置为多列排序顺序,那么将满足我对"by dealerType asc,dealerCode desc"排序结果的要求的替代解决方案.

任何帮助将不胜感激.提前致谢.

缺口

querydsl spring-data-jpa

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

类型安全查询到底意味着什么?

在通过JPA,QueryDSL时,他们都包含了类型安全查询的概念.但究竟是什么呢?根据博客/文章,我想JPA/QueryDSL的一个功能是在进行查询时验证它们的参数类型.并且查询的任何错误都会在编译时而不是运行时出现.我对吗?它只是为了这个还是我错过了什么?

sql hibernate jpa querydsl

6
推荐指数
2
解决办法
3298
查看次数

QueryDsl - 基于密钥过滤Map

我在我的hibenrate实体类中有以下属性:

@MapKeyJoinColumn(name = "language_code")
@LazyCollection(LazyCollectionOption.EXTRA)
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "text_translations", joinColumns = @JoinColumn(name = "text_id"))
private Map<Language, String> translations = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

现在我想查询这个实体并按用户的语言过滤地图内容(即按地图的键).我有以下加入我的查询:

StringPath titleTran = new StringPath("title_tran");
from(entity).
.leftJoin(entity.translations, titleTran).fetch().where(?mapKey?.eq(userLanguage));
Run Code Online (Sandbox Code Playgroud)

我需要的是什么?mapKey?通过titleTran路径的语言路径.这在QueryDsl中是否可行?

java sql dictionary hibernate querydsl

6
推荐指数
1
解决办法
1174
查看次数

如何在querydsl中编写子查询?

我在我的项目中使用了 querydsl、hibernate 和 spring data jpa。我编写了这个本机查询并且工作正常。但是我如何在 Querydsl 中编写这个查询。

List<OpenChart> openChartList = (List<OpenChart>) getEntityManager()
.createNativeQuery( "select * from (select * from open_chart order by id desc ) open_chart where user_id="+userId+" group by patient_chart_id order by id",OpenChart.class).getResultList();
Run Code Online (Sandbox Code Playgroud)

java hibernate querydsl spring-data-jpa

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

Spring数据和锁定

是否有可能在spring-data存储库中有两个方法 - 一个没有锁定T findOne(Predicate p);在一起但有锁定@Lock(LockModeType.PESSIMISTIC_WRITE) T findOne(Predicate p);

我希望有类似的东西

public interface TransactionRepository extends JpaRepository<Transaction, String>,
    QueryDslPredicateExecutor<Transaction> {

    @Lock(LockModeType.PESSIMISTIC_WRITE)
    @AliasFor("findOne")
    Transaction findOne_withLock(Predicate p);
}
Run Code Online (Sandbox Code Playgroud)

java spring querydsl spring-data-jpa

6
推荐指数
1
解决办法
842
查看次数

Spring Boot MongoDb QueryDSL Gradle Intellij Integration用于生成QueryDSL Q类

我正在尝试使用Spring Boot项目中的gradle为我的Mongo实体生成QueryDSL Q类.我正在使用的IDE是Intellij.

我正在使用的代码改编自本主题从Gradle构建脚本生成JPA2 Metamodel:

sourceSets {
    generated {
        java {
            srcDirs = ['src/generated/java']
        }
    }
}

configurations {
    querydslapt
}

task generateQueryDSL(type: JavaCompile, group: 'build', description: 'Generates the QueryDSL query types') {
    source = sourceSets.main.java
    classpath = configurations.compile + configurations.querydslapt
    options.compilerArgs = [
            "-proc:only",
            "-processor", "org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor"
    ]
    destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}

compileJava {
    dependsOn generateQueryDSL
    source  generateQueryDSL.destinationDir
}

compileGeneratedJava {
    dependsOn generateQueryDSL
    options.warnings = false
    classpath += sourceSets.main.runtimeClasspath
}

clean {
    delete sourceSets.generated.java.srcDirs
}

idea {
    module …
Run Code Online (Sandbox Code Playgroud)

intellij-idea mongodb gradle querydsl spring-boot

6
推荐指数
0
解决办法
436
查看次数

如何在 Spring Boot 中将 Query DSL 与 MongoDB 结合使用

我尝试在 Spring Boot 中将 Query DSL 与 MongoDB 结合使用,但出现错误。该应用程序无需使用 MongoDB 的 Query DSL 库即可成功运行。我想使用这个库,因为我想使用更复杂的查询。代码应该可以工作,我认为某处有一个小错误。

问题是当我单击 Maven 包时,我收到这些错误,不幸的是我无法在此处发布所有输出:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'hotelController' defined in file [C:\Users\dgs\IdeaProjects\springboot-mongodb\target\classes\com\dgs\springbootmongodb\controller\HotelController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hotelRepository': Invocation of init method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.repository.support.QuerydslMongoPredicateExecutor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Did not find a query class com.dgs.springbootmongodb.models.QHotel for domain class com.dgs.springbootmongodb.models.Hotel!

Caused by: org.springframework.beans.factory.BeanCreationException: Error …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb querydsl spring-boot

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

加入三个深度表时“MultipleBagFetchException:无法同时获取多个袋子”

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.loader.MultipleBagFetchException: 不能同时取多个包: [Order.items, OrderItem.options];

以上是我加入如下三个表时遇到的一个例外。

订单项选项.java

@Entity
public class OrderItemOption {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "item_option_id")
  private Long id;

  @Column(name = "item_id", nullable = false)
  private Long itemId;

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(
      name = "item_id",
      referencedColumnName = "item_id",
      insertable = false,
      updatable = false
  )
  private OrderItem orderItem;
}
Run Code Online (Sandbox Code Playgroud)

订单项.java

@Entity
public class OrderItem {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "item_id")
  private Long id;

  @Column(name = "order_id", nullable = false)
  private Long orderId;

  @ManyToOne(fetch = FetchType.LAZY) …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa querydsl

6
推荐指数
1
解决办法
9063
查看次数

如何使用 querydsl 或 spring data jpa 规范对分层实体执行查询?

我有一个这样的实体层次结构。除了一些常见的属性外,一些属性仅由几个子类型共享:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Person {
    private String firstName;
    private String lastName

    ... further properties, getters and setters...
}

@Entity
public class Employee extends Person {
    private String salary;

    ... further properties, getters and setters...
}

@Entity
public class BoardMember extends Person {
    private String salary;

    ... further properties, getters and setters...
}

@Entity
public class ExternalMember extends Person {
    private String clearanceLevel;

    ... further properties, getters and setters...
}

@Repository
public interface PersonRepository extends …
Run Code Online (Sandbox Code Playgroud)

java hibernate querydsl spring-data-jpa

6
推荐指数
1
解决办法
823
查看次数

Spring 数据 R2DBC:org.springframework.data.mapping.PropertyReferenceException:找不到类型的属性 findAll

我正在尝试将ReactiveQuerydslPredicateExecutor和 R2dbcRepository 用于我的 spring-data-r2dbc 应用程序和 r2dbc-mssql 客户端版本 0.8.1.RELEASE

我将spring-boot版本从 2.2.7.RELEASE 升级到2.3.0.RELEASE并将spring-data-r2dbc版本从 1.0.0.RELEASE 升级到1.1.0.RELEASE。我正在使用 query-dsl 版本 4.3.1 来生成带有 apt-maven-plugin 的 Q-Classes。

进行这些更改后,当我运行我的应用程序时,出现以下错误。我一整天都在尝试,但找不到任何使它起作用的方法。有什么我想念的吗?

注意:如果我不进行上述更改并且不扩展存储库类中的 ReactiveQuerydslPredicateExecutor,则应用程序运行得非常好。

模型类

@Table(value = "db_access_schema.access_control")
@QueryEntity
public class AccessControl implements Persistable<UUID> {

  @Id
  private UUID id;
  private Long iub;
  private Long iubHeadOffice;
  private String bncId;
  private String subjectId;
  private String subjectTypeCd;
  private String subjectIdTypeCd;
  private String objectId;
  private String objectTypeCd;
  private String objectIdTypeCd;
  private String actionCd;
  private …
Run Code Online (Sandbox Code Playgroud)

spring-security querydsl spring-boot spring-data-r2dbc

6
推荐指数
1
解决办法
1129
查看次数