【问题标题】:Map Java Object映射 Java 对象
【发布时间】:2019-04-07 03:41:06
【问题描述】:

我想创建一个服务来填充数据库中的下拉列表。我试过这个:

商户类:

export class Merchant {
  constructor(
    public id: string,
    public name: string,
    public state_raw: string,
    public users: string,
  ) {}
}

商家服务:

 getList(): Observable<Merchant> {
    return this.http.get<Merchant>(environment.api.urls.merchants.base, {});
  }

Rest Api 实现:

@GetMapping
    public ResponseEntity<?> get() {
        return merchantRepository
                .findAll()
                .map(mapper::toDTO)
                .map(ResponseEntity::ok)
                .orElseGet(() -> notFound().build());
    }

SQL 查询:

@Override
    public Iterable<Merchants> findAll() {
        String hql = "select e from " + Merchants.class.getName() + " e";
        TypedQuery<Merchants> query = entityManager.createQuery(hql, Merchants.class);
        List<Merchants> merchants = query.getResultList();
        return merchants;
    }

但我收到此错误:

The method map(mapper::toDTO) is undefined for the type Iterable<Merchants>

我应该如何正确地为响应实现这个映射?

【问题讨论】:

    标签: spring angular rest


    【解决方案1】:

    似乎您打算流式传输实体。

    @GetMapping
    public ResponseEntity<?> get() {
        return StreamSupport.stream(merchantRepository.findAll().spliterator(), false)
                .map(mapper::toDTO)
                .map(ResponseEntity::ok)
                .findFirst()
                .orElseGet(() -> notFound().build());
    }
    

    【讨论】:

    • 我得到 Iterable 类型的方法 splititerator() 未定义
    • @PeterPenzov 您使用的是什么 JDK?它应该在那里。
    • java版本“10.0.2”
    • @PeterPenzov 抱歉,这是我的错误。它是“分离器”,而不是“分离器”。我已编辑我的回答以删除此错字。
    • 现在我得到了 Stream> 类型的方法 orElseGet(() -> {}) 未定义
    猜你喜欢
    • 2018-08-13
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    相关资源
    最近更新 更多