java - 在新实体上重用 Hibernate 中的特定字段

标签 java hibernate

我需要重用已映射到 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/

相关文章:

java - Android 中的首选项不会保留

java.io.NotSerializableException : org. json.JSONObject

Java 子字符串内存泄漏

Hibernate JPA native 查询结果集

java - Hibernate拦截器.instantiate()

java - 如何检查 MySQL 表是否有来自 Java/Android 的下一行

java - 如何在Activity中使用回调

java - 如何从表中读取所有记录(> 1000万条记录)并将每条记录作为 block 响应?

java - Spring-Data 中子对象不与父对象一起获取

java - 将基于 Hibernate 的 J2EE 应用程序部署到远程服务器的正确方法