如何在休眠中将标准结果设置为另一个 pojo class 变量
How to set the criteria result to another pojo class variables in hibernate
我正在使用条件从数据库中获取数据,而在条件中我正在使用 groupProperty() 和 sum()。
我想知道我想将这个结果更新到我的另一个 table。我知道的方法是将这里的结果设置到另一个 pojo class,然后更新到另一个 table。但我想知道有没有其他方法可以做到这一点?如果有那么请建议我。
这是我的pojo class Post.java
@Entity
@Table(name="post")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Post implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name="id")
private long id;
@Column(name="uid")
private long userId;
@Column(name="value")
private long val;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
public long getVal() {
return val;
}
public void setVal(long val) {
this.val = val;
}
}
这是我的 DAO class
@SuppressWarnings({ "unchecked", "rawtypes" })
public List<Post> getPostList() throws Exception {
session = sessionFactory.openSession();
Criteria cr = session.createCriteria(Post.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.sum("val"));
projList.add(Projections.groupProperty("userId"));
cr.setProjection(projList);
List postList = cr.list();
tx = session.getTransaction();
session.beginTransaction();
tx.commit();
return postList;
}
}
这是我的另一个 pojo class Result.java 我想要这两个结果
public class Result {
private long topValue;
private long uid;
public long getTopValue() {
return topValue;
}
public void setTopValue(long topValue) {
this.topValue = topValue;
}
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
}
当您使用 criteria 的 setResultTransformers 方法并将别名添加到 ProjectionList 的 add 方法时,您应该得到一个 Result 类型的列表。
public List<Result> getResultList() throws Exception {
session = sessionFactory.openSession();
Criteria cr = session.createCriteria(Post.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.sum("val"), "topValue");
projList.add(Projections.groupProperty("userId"), "uid");
cr.setProjection(projList);
cr.setResultTransformers(Transformers.aliasToBean(Result.class)
List postList = cr.list();
tx = session.getTransaction();
session.beginTransaction();
tx.commit();
return postList;
}
}
我正在使用条件从数据库中获取数据,而在条件中我正在使用 groupProperty() 和 sum()。
我想知道我想将这个结果更新到我的另一个 table。我知道的方法是将这里的结果设置到另一个 pojo class,然后更新到另一个 table。但我想知道有没有其他方法可以做到这一点?如果有那么请建议我。
这是我的pojo class Post.java
@Entity
@Table(name="post")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Post implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name="id")
private long id;
@Column(name="uid")
private long userId;
@Column(name="value")
private long val;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
public long getVal() {
return val;
}
public void setVal(long val) {
this.val = val;
}
}
这是我的 DAO class
@SuppressWarnings({ "unchecked", "rawtypes" })
public List<Post> getPostList() throws Exception {
session = sessionFactory.openSession();
Criteria cr = session.createCriteria(Post.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.sum("val"));
projList.add(Projections.groupProperty("userId"));
cr.setProjection(projList);
List postList = cr.list();
tx = session.getTransaction();
session.beginTransaction();
tx.commit();
return postList;
}
}
这是我的另一个 pojo class Result.java 我想要这两个结果
public class Result {
private long topValue;
private long uid;
public long getTopValue() {
return topValue;
}
public void setTopValue(long topValue) {
this.topValue = topValue;
}
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
}
当您使用 criteria 的 setResultTransformers 方法并将别名添加到 ProjectionList 的 add 方法时,您应该得到一个 Result 类型的列表。
public List<Result> getResultList() throws Exception {
session = sessionFactory.openSession();
Criteria cr = session.createCriteria(Post.class);
ProjectionList projList = Projections.projectionList();
projList.add(Projections.sum("val"), "topValue");
projList.add(Projections.groupProperty("userId"), "uid");
cr.setProjection(projList);
cr.setResultTransformers(Transformers.aliasToBean(Result.class)
List postList = cr.list();
tx = session.getTransaction();
session.beginTransaction();
tx.commit();
return postList;
}
}