Java 没有基础表的JPA实体
我想创建一个类,该类可以映射到使用JPA本机查询从数据库提取的结果。有没有办法将没有基础表的实体映射到结果? 我提到了允许它休眠的链接。这可以用JPA来代替吗 这是我希望映射结果的类Java 没有基础表的JPA实体,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我想创建一个类,该类可以映射到使用JPA本机查询从数据库提取的结果。有没有办法将没有基础表的实体映射到结果? 我提到了允许它休眠的链接。这可以用JPA来代替吗 这是我希望映射结果的类 import java.math.BigDecimal; import javax.persistence.Entity; @Entity public class OpUsage { String username; BigDecimal number_of_clicks;
import java.math.BigDecimal;
import javax.persistence.Entity;
@Entity
public class OpUsage {
String username;
BigDecimal number_of_clicks;
String accordion;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public BigDecimal getNumber_of_clicks() {
return number_of_clicks;
}
public void setNumber_of_clicks(BigDecimal number_of_clicks) {
this.number_of_clicks = number_of_clicks;
}
public String getAccordion() {
return accordion;
}
public void setAccordion(String accordion) {
this.accordion = accordion;
}
}
定义将本机查询结果返回给非实体类的方法
您应该签出标题3.10.16.2返回非托管实例,尤其是
3.10.16.2.2建造商结果
使用ConstructorResult指定到构造函数的映射
SqlResultSetMapping注释的注释元素。这个
ConstructorResult注释的targetClass元素指定
类,其构造函数对应于指定的列。全部的
与预期构造函数的参数对应的列必须为
使用ConstructorResult的columns元素指定
注释的顺序与
构造器。作为构造函数结果返回的任何实体都将在
新状态或分离状态,取决于主
为构造的对象检索密钥
示例
Query q = em.createNativeQuery(
"SELECT c.id, c.name, COUNT(o) as orderCount, AVG(o.price) AS
avgOrder" +
"FROM Customer c, Orders o " +
"WHERE o.cid = c.id " +
"GROUP BY c.id, c.name",
"CustomerDetailsResult");
@SqlResultSetMapping(name = "CustomerDetailsResult",
classes = {
@ConstructorResult(targetClass = com.acme.CustomerDetails.class,
columns = {
@ColumnResult(name = "id"),
@ColumnResult(name = "name"),
@ColumnResult(name = "orderCount"),
@ColumnResult(name = "avgOrder", type = Double.class)})
})
非常感谢。我没有提到这个对象将在Jasper报告中使用。所以我必须使用与报告中使用的名称相同的名称。这个解决方案非常有效。只需确保将SqlResultsMapping添加到带有@Entity注释的类中,而不是添加到非实体类中,否则Spring将无法识别该映射。能否提供详细示例?这确实给了我我在寻找什么,但我无法理解的是,我们把上面的代码放在哪里?在存储库层或bean本身中?可以在此处找到放置提示: