我需要重用已映射到 Hibernate 实体的表中的某些特定字段并创建新实体。 我们有一个这样的表:
TABLE `OLDTABLE` (
/// MANY FIELDS
`aPhoneNumber` varchar(30) NOT NULL,
/// MORE FIELDS
`aActive` int(11) NOT NULL,
`aLastPaid` datetime NOT NULL,
/// EVEN MORE FIELDS
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
对此的更新目前由 Hibernate 管理,无需更改该代码。 但是,出于报告目的,我们需要一个只返回部分字段的新查询,我们希望将另一个实体映射到这些字段。像这样:
public class NewEntity{
private String phoneNumber;
private int active;
private Date lastPaid
/// getters & setters ...
}
我们希望它易于使用,而不是将标量添加到当前查询。不需要更新,只需查询。
附言我是 Hibernate 的新手,但我掌握了大部分基础知识。
更新:非常感谢您的回答。我们工作有急事,我没能试一试。我将在下周完成这项工作,因为我一直在不停地处理一些紧迫的问题。
最佳答案
你可以创建一个DTO而不是一个实体,并使用一个hibernate构造函数表达式来代替,一个伪例子
public class NewDTO{
private String phoneNumber;
private int active;
private Date lastPaid
public NewDTO(final String phoneNumber, int active, Date lastPaid) {
this.phoneNumber = phoneNumber;
this.active= active;
this.lastPaid= lastPaid;
}
/// getters & setters ...
}
和您的查询
select new your.package.NewDTO(e.phoneNumber, e.active, e.lastPaid) from Entity e
关于java - 在新实体上重用 Hibernate 中的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28765351/