【问题标题】:Mapping value from alias column into @Entity Class将别名列中的值映射到 @Entity 类
【发布时间】:2020-06-02 17:00:22
【问题描述】:

在查询我的@Entity 类时,是否有任何可能的方法来映射别名列的值?例如,对于这种情况,有新列:名字和姓氏在事务表中不存在。有没有办法将值映射到 Transaction @Entity 类?

示例实体和道

@实体

import java.sql.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="Transaction")
public class Transaction {
    @Id
    @Column(name="customer_id")
    private String customerId;

    @Column(name="first_name")
    private String firstName;

    @Column(name="last_name")
    private String lastName;

@TransactionDAO

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.querydsl.QuerydslPredicateExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface TransactionDao extends PagingAndSortingRepository<Transaction, Long>,  QuerydslPredicateExecutor<Transaction>{
    @Query(value = "SELECT customer_id, SUBSTR (customer_name, 1, 10) as first_name, SUBSTR (customer_name, 11, 20) as last_name FROM Transaction WHERE customer_id=:#{#customerId}", nativeQuery = true)
    public List<Transaction> selectByTransaction(@Param("customerId") String customerId);

}

如果我对 first_name 和 last_name 使用 @Column 注释,则会出现错误,因为 Transaction Table 中不存在该列中的两个

【问题讨论】:

    标签: spring spring-boot jpa spring-data-jpa dao


    【解决方案1】:

    是的,可以将查询的输出映射到不同的模型。这里的答案是通过接口投影。您可以使用要从 Query 或 Repository 方法接收的字段名称创建接口。例如,如果您只想接收 firstName 和 lastName,您可以创建如下所示的接口。其他字段将被省略。 Interface 中的字段可以不同于 @Entity 类中的字段。

    interface TransactionProjection {
        String getFirstName();
        String getLastName();
    }
    

    有用的链接: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections https://www.baeldung.com/spring-data-jpa-projections

    【讨论】:

      猜你喜欢
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多