Java 使用QueryDSL使用静态导入和创建新的q类型实例有什么区别?
我在生产代码行中看到如下内容:Java 使用QueryDSL使用静态导入和创建新的q类型实例有什么区别?,java,querydsl,Java,Querydsl,我在生产代码行中看到如下内容: public Info findById(final long id){ QInfo info = QInfo.info; JPAQuery query = newJpaQuery().from(info); ..... } 另一方面: import static com.example.system.app.entities.QApplication.application; public Application findById(final long
public Info findById(final long id){
QInfo info = QInfo.info;
JPAQuery query = newJpaQuery().from(info);
.....
}
另一方面:
import static com.example.system.app.entities.QApplication.application;
public Application findById(final long id){
return newJpaQuery().from(application).where(application.applicationId.eq(id)).uniqueResult(application);
}
使用静态导入和为每个方法创建Q实例有什么不同?这个问题的根源是否来自于一些线程安全的观察结果?Q-实例是线程安全的,但有时在同一类型的查询中需要多个变量 通常,如果每个类型只需要一个变量,那么默认变量就足够了,如果需要更多,则需要创建其他变量 这些附加变量可以在每个查询中创建,也可以作为常量创建 e、 g
因此,如果我需要每个类一个Q实例,我可以在该类的每个方法中使用它,并使用静态导入,而不必担心多线程?
QInfo info = QInfo.info; // default variable
QInfo info2 = new QInfo("info2"); // extra variable
newJpaQuery().from(info).innerJoin(info.path, info2).where(...)