как выбрать с помощью whereclause по id - PullRequest
0 голосов
/ 21 апреля 2020

Привет всем, у меня проблемы, когда я хочу выбрать

private void getExecutionReport(quickfix.Message message, String tipeMessage) {
    // TODO Auto-generated method stub
     try {
         String timestampasstring = message.getString(TransactTime.FIELD);
         System.out.println(timestampasstring);
         String[] timestampasstrings = timestampasstring.split("\\.");
         String timestamptostring = timestampasstrings[0];
         System.out.println(timestamptostring);
         LocalDateTime ldt = LocalDateTime.parse(timestamptostring, DateTimeFormatter.ofPattern("yyyyMMdd-HH:mm:ss"));
         System.out.print(ldt);
         String IDTransaksi = message.getString(ClOrdID.FIELD);
         String[] IDTransaksis = IDTransaksi.split("-");
         String ID = IDTransaksis[1];
         Integer Id = Integer.parseInt(ID);
         System.out.println(Id);
         tradingHistory tradingHistorys = RepositoryFactory.gettradingHistoryRepo().findByID(Id);
        String type = tradingHistorys.getPrice_type();
        System.out.println(type);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

мой стек кода в

tradingHistory tradingHistorys = RepositoryFactory
    .gettradingHistoryRepo().findByID(Id);
String type = tradingHistorys.getPrice_type();
System.out.println(type);

здесь мой журнал и стек ошибки

FromApp 8=FIX.4.29=26435=834=421943=Y49=Fastmatch152=20200421-08:00:15.96056=TRValueTrade2UAT1122=20200421-07:54:53.2946=011=FM-11427814=015=AUD17=1861228320=032=037=122768079738=177777.7739=040=P44=0.6274954=155=AUD/USD60=20200421-07:54:53.294150=0151=177777.7710=232
 FromApp 8
20200421-07:54:53.294
2020-04-21T07:54:53
114278

Я попытался использовать whereclause в моем коде здесь. но когда я пытаюсь это сделать, я получаю сообщение об ошибке моего стека кода в select, используя выражение where

public tradingHistory findByID(final Integer Id) throws SQLException {
     WhereClause<tradingHistory> conditions = new WhereClause<tradingHistory>() {
        public void defineWhere(CriteriaBuilder criteriaBuilder, 
                                CriteriaQuery<tradingHistory> criteriaQuery,
                                Root<tradingHistory> root) {
                // TODO Auto-generated method stub
                 criteriaQuery.select(root).where(criteriaBuilder.equal(root.get("id"), Id));     
            }
     };
     OrderClause<tradingHistory> orders = new OrderClause<tradingHistory>() {
        public void defineOrder(CriteriaBuilder criteriaBuilder, CriteriaQuery<tradingHistory> criteriaQuery,
                Root<tradingHistory> root) {
            // TODO Auto-generated method stub
             criteriaBuilder.asc(root.get(Id+"id"));
        }
     };
    return singleResult(conditions,orders,0,1,0);
}

и здесь мой объект для столбца с идентификатором

@Entity
@Table(name="trade_history", schema="trading_dashboard")
public class TradingHistory implements Serializable {
    @Id
    @Column(name="id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer Id;
}

, так как решить мою проблему здесь?

...