gpt4 book ai didi

java - 如何使用 jpa 和 hibernate 将 native 查询映射到 POJO 类

转载 作者:行者123 更新时间:2023-11-30 07:11:34 25 4
gpt4 key购买 nike

我在我的项目中同时使用 JPA 和 hibernate。

我创建了一个查询,在其中对许多表进行了联接操作。所以我创建了一个本地的。我得到的结果位于 object[] 列表中,但我希望结果自动转换为 java POJO 类。您可以在下面检查查询语法和 POJO java 类。

JPA 查询

@Query(value = "SELECT obsp.Identifier, obs.phenomenontimestart, nv.value " +
"From Series s " +
"INNER JOIN Featureofinterest fi on s.featureofinterestid = fi.featureofinterestid " +
"INNER JOIN ObservableProperty obsp on s.observablepropertyid = obsp.ObservablePropertyId " +
"INNER JOIN Observation obs on s.seriesid = obs.seriesid " +
"INNER JOIN NumericValue nv on nv.observationid = obs.observationid " +
"where fi.identifier = ?1 and obs.phenomenontimestart >= ?2 AND obs.phenomenontimestart <= ?3 " +
"order by obs.phenomenontimestart",
nativeQuery = true)
List<CurrentMeasure> findCurrentMeasure(String ident, Timestamp t1, Timestamp t2);

POJO类

public class CurrentMeasure {

private String identifier;
private Timestamp dateTime;
private BigDecimal bigDecimal;

public CurrentMeasure() {
}

public CurrentMeasure(String identifier, Timestamp dateTime, BigDecimal bigDecimal) {
this.identifier = identifier;
this.dateTime = dateTime;
this.bigDecimal = bigDecimal;
}

public String getIdentifier() {
return identifier;
}

public void setIdentifier(String identifier) {
this.identifier = identifier;
}

public Timestamp getDateTime() {
return dateTime;
}

public void setDateTime(Timestamp dateTime) {
this.dateTime = dateTime;
}

public BigDecimal getBigDecimal() {
return bigDecimal;
}

public void setBigDecimal(BigDecimal bigDecimal) {
this.bigDecimal = bigDecimal;
}

}

最佳答案

使用 JPA,您可以调用类的构造函数 CurrentMeasure直接在 HQL 查询中。

示例:
SELECT NEW <package>.CurrentMeasure(obsp.Identifier, obs.phenomenontimestart, nv.value) FROM ...

新语法在Jboss documentation中进行了解释。参见第 11.5 章。

另一个解决方案是使用 HQL Transformers无需借助构造函数即可获得相同的结果。

关于java - 如何使用 jpa 和 hibernate 将 native 查询映射到 POJO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39155529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com