JPA - отображение дополнительной расчетной стоимости от объекта - PullRequest
0 голосов
/ 24 января 2019

У меня есть объект с именем Taxi, в котором хранится информация о его местонахождении.У меня есть хранимая процедура, которая возвращает поля этой сущности, и дополнительное поле, называемое «расстояние», которое вычисляется хранимой процедурой.Вопрос в том, что я возвращаю сущность Такси из хранимой процедуры, которая, очевидно, не имеет поля расстояния, как мне получить это вычисленное поле расстояния?

Вот как это выглядит:

List<Taxi> getTaxisAroundMe(Integer customerId,Integer distance); 

1 Ответ

0 голосов
/ 24 января 2019

Введите:

 @Entity
 @Immutable
 public class TaxiReadOnly extends Taxi {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", updatable = false, nullable = false)
    private Long /*?*/ id;

    private Integer distance;
    //get+set
 }

Тогда:

public interface TaxiReadOnlyRepository {
   List<TaxiReadOnly> calcDistance(/*input params*/);
}


// as before
public interface TaxiRepository extends CrudRepository<Taxi, Long>,
  //but now with
  TaxiReadOnlyRepository {}


// and
public class TaxiReadOnlyRepositoryImpl implements TaxiReadOnlyRepository {
   @PersistenceContext
   private EntityManager em;
   @Override
   public List<TaxiReadOnly> calcDistance(/*input params*/) {
       return em.createNativeQuery("BEGIN call_ur_procedure(:inParam1, ...); END;")
      //.setParameter("inParam1", inParam1)
      .getResultList();
  }
}

см

...