我有证据:
@Entity
@Getter
@Setter
@NoArgsConstructor
public class Technic implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String gosNumber;
private String invNumber;
private String shassisNumber;
private String engineNumber;
@Column(length = 100)
private String yearOfMake;
@ManyToOne
private Farm farm;
@JsonManagedReference
@ManyToOne
private TechGroup techGroup;
@JsonManagedReference
@ManyToOne
private TechType techType;
@JsonManagedReference
@ManyToOne
private TechMark techMark;
@JsonIgnore
@CreationTimestamp
@Column(name = "creation_date", updatable = false)
private LocalDateTime createdDate;
@JsonIgnore
@Column(name = "updated_date")
@UpdateTimestamp
private LocalDateTime updatedDate;
@JsonIgnore
@Column(columnDefinition = "Bool default false")
private Boolean isDel;
@JsonManagedReference
@OneToMany(mappedBy = "technic")
private List<TechnicStatus> technicStatusList = new ArrayList<>();
public List<TechnicStatus> getTechnicStatusList() {
return technicStatusList;
}
public void setTechnicStatus(TechnicStatus technicStatus) {
this.technicStatusList = new ArrayList<>();
this.technicStatusList.add(technicStatus);
}
@Entity
@Getter
@Setter
@NoArgsConstructor
public class TechnicStatus implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "technic_status_id")
private Long id;
@JsonBackReference
@ManyToOne
private Technic technic;
@JsonManagedReference
@ManyToOne
private Status status;
private Boolean isGarantia;
private Boolean isLizing;
private LocalDate visitedDate;
private LocalDate notWorkDate;
private String description;
@JsonIgnore
private boolean isActive;
@JsonIgnore
@CreationTimestamp
@Column(name = "creation_date", updatable = false)
private LocalDateTime createdDate;
}
我想从我的数据库中获得结果,它包含每个对象中的列表technicStatusList=new arraylist<>(),我想在其中有一个TechnicStatus仅值为isactive=true。
为此,我使用了相同的JPQL查询:
TypedQuery<Technic> query = em.createQuery("Select t from Technic t join TechnicStatus ts on t.id = ts.technic.id where t.isDel=false and ts.isActive=true and t.farm.id=:farmId order by t.techGroup.name, t.techType.name, t.techMark.name", Technic.class);
但是得到一个包含TechnicStatus的结果,该结果返回一个包含true和false的TechnicStatus.isactive=true,TechnicStatus.isactive=false)。
我希望以本机查询的形式获得结果:
SELECT
*
FROM
technic
JOIN
technic_status ON technic.id = technic_status.technic_id
WHERE
technic.is_del = FALSE
AND technic_status.is_active = TRUE
AND technic.farm_id = 1722
与技术相关联的TechnicalStatus列表将始终是由映射定义的完整列表。
基本上你有两个选择。如果您只对状态为Active的TechnicalStatus感兴趣,那么可以在关联中使用非可移植的、特定于Hibernate的@where
子句。
@JsonManagedReference
@OneToMany(mappedBy = "technic")
@Where("active = 1")
private List<TechnicStatus> technicStatusList = new ArrayList<>();
https://dzone.com/articles/hibernate-where-子句
否则,您所做的就是从查询方法返回一个TechnicalStatus列表,这不是您想要的,而是您所拥有的全部。
不带筛选器的查询: 当我用curl:curl-w'\ntime_total:%{time_total}\n'-h'content-type:application/json'-xget-d‘{}':9200/store/msg/_search?routing=user1来度量这两个查询的性能时 不带筛选器的查询得到的总时间:1.134、1.237、1.107,带筛选器的查询时间:1.322、1.4
问题内容: 对于 内部联接 ,在子句或子句中应用过滤器的性能有何不同?哪个会更有效,或者优化器将使它们相等? 加入 VS 在哪里 Oracle11gR2 问题答案: 应该没有区别。在这两种情况下,优化器都应生成相同的计划,并且应该能够基于特定查询的最有效方法,在这两种情况下的连接之前,之后或之中应用谓词。 当然,事实优化 可以 做一些事情,一般来说,是不能保证优化器 会 做一些实际的特定查询。随着
我试图编写一个由2个部分组成的弹性搜索布尔查询。我想要“必须”的两个条件和“应该”的两个条件。问题是我只想得到“应该”的分数。我尝试了“过滤器”,但没有成功。 你有什么想法吗?
问题内容: 我正在尝试使用过滤查询集 我的问题是我不知道用户想提前搜索哪个字段,因此我需要用一个变量替换“名称”,如下所示 我怎么做? 问题答案: 差不多了.. 要了解它在做什么,请在Google周围搜索 :)了解Python中的kwargs 将字典键/值对扩展为关键字参数-值对。 使你的示例适应解决方案:
问题内容: “过滤后的查询和过滤器”与“根查询和过滤器”之间有什么区别吗?例如 情况1: 情况2: 我在http://elasticsearch-users.115913.n3.nabble.com/Filtered-query-vs-using- filter-outside-td3960119.html中 找到了此讨论,但所引用的URL是404,并且解释过于简洁我。 请示教或提供指出这些区别的
null 当我提供nothing查询时,返回所有父亲 当我提供父亲名“乔恩”时,我希望是乔恩·雪诺和乔恩·阿尔比 当我提供姓氏“Colby”时,查询将返回HARRY Colby 我尝试了数百万次,但我不能写一个查询,当我没有提供任何参数时,它将返回所有父,当我提供一些参数时,它将减少找到的父列表。