как вставить тип столбца перечисления в mysql, используя java - PullRequest
0 голосов
/ 24 апреля 2020

У меня проблема, когда я хочу вставить данные и столбец enumtype в mysql. но мой sql всегда откатывает мое создание. мой вопрос, как вставить данные с типом enum в столбце mysql здесь мой код, когда я хочу создать

System.out.print(" ExecTransType "+message.getString(ExecTransType.FIELD));
String Orders = message.getString(OrdType.FIELD);
if (Orders.equals("P")){
    newordersingleObj.setOrdType("PEGGED");
}else if (Orders.equals("1")){
    newordersingleObj.setOrdType("MARKETORDER");
} else if (Orders.equals("2")){
    newordersingleObj.setOrdType("LIMIT");
}
System.out.print(" OrdType "+message.getString(OrdType.FIELD));
newordersingleObj.setExecType(message.getString(ExecType.FIELD));
System.out.print(" ExecType "+message.getString(ExecType.FIELD));
String status = message.getString(OrdStatus.FIELD);
if (status.equals("0")){
    newordersingleObj.setOrderStatus("NEW");
}else if(status.equals("1")){
    newordersingleObj.setOrderStatus("PARTIALFILLED");
}else if(status.equals("2")){
    newordersingleObj.setOrderStatus("FILLED");
}else if(status.equals("3")){
    newordersingleObj.setOrderStatus("DONEFORDAY");
}else if(status.equals("4")){
    newordersingleObj.setOrderStatus("CANCELLED");
}else if(status.equals("8")){
    newordersingleObj.setOrderStatus("REJECTED");
}else if(status.equals("C")){
    newordersingleObj.setOrderStatus("EXPIRED");
}

System.out.print(" OrdStatus "+message.getString(OrdStatus.FIELD));
newordersingleObj.setSide(message.getInt(Side.FIELD));
System.out.print(" Side "+message.getInt(Side.FIELD));
newordersingleObj.setOrderQty(message.getDouble(OrderQty.FIELD));
System.out.print(" OrderQty "+message.getDouble(OrderQty.FIELD));
newordersingleObj.setLeavesQty(message.getDouble(LeavesQty.FIELD));
System.out.print(" LeavesQty "+message.getDouble(LeavesQty.FIELD));
newordersingleObj.setCumQty(message.getDouble(CumQty.FIELD));
System.out.print(" CumQty "+message.getDouble(CumQty.FIELD));
newordersingleObj.setLastShares(message.getDouble(LastShares.FIELD));
System.out.print(" LastQty "+message.getDouble(LastShares.FIELD));
newordersingleObj.setAveragePrice(message.getDouble(AvgPx.FIELD));
//                newordersingleObj.setCheckSum("95");
newordersingleObj.setPrice(message.getDouble(Price.FIELD));
newordersingleObj.setCurrency(message.getString(Currency.FIELD));
newordersingleObj.setMsgSeqNum(3);
newordersingleObj.setSenderCompId("Fastmatch1");
newordersingleObj.setTargetCompID("TRValueTrade2UAT1");
newordersingleObj.setSendingTime(message.getString(TransactTime.FIELD));
newordersingleObj.setCreated_at(time);
System.out.print("sebelum insert ke db");
RepositoryFactory.getOrderRepository().create(newordersingleObj);

здесь мой класс enum

public enum enumOrderStatus {
    NEW, PARTIALFILLED, FILLED, DONEFORDAY, CANCELLED, REJECTED, EXPIRED
}

и вот мой второй класс enum

public enum enumOrderType {
    PEGGED, LIMIT, MARKETORDER
}

и вот моя сущность для перечислимого типа, почему нельзя преобразовать перечислимый тип в mysql

@Enumerated(EnumType.STRING)
        @Column(name="OrderStatus")
        private enumOrderStatus OrderStatus;

        @Enumerated(EnumType.STRING)
        @Column(name="OrdType")
        private enumOrderType OrdType;
public String getOrderStatus() {
            return this.OrderStatus.name();
        }

        public void setOrderStatus(enumOrderStatus OrderStatus) {
            this.OrderStatus = OrderStatus;
        }

        public String getOrdType() {
            return this.OrdType.name();
        }

        public void setOrdType(enumOrderType OrdType) {
            this.OrdType = OrdType;
        }
there is no error 
but my code like stack in this 

    Hibernate: insert into new_single_order_response (AveragePrice, ClOrdID, created_at, CumQty, Currency, ExecID, ExecTransType, ExecType, LastShares, LeavesQty, MsgSeqNum, OrdType, OrderID, OrderQty, Price, SenderCompId, SendingTime, Side, Symbol, TargetCompID, TransactTime, updated_at, OrderStatus) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 

i also have catch error but there is no error only stack for insert to my database


        } catch (FieldNotFound e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    } catch (SQLException e) {
            // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println(e.getMessage());
        } catch (Exception e) {
            // TODO Auto-generated catch block
        e.printStackTrace();
        System.out.println(e.getMessage());
        }

my question is how to insert to enum column using java ? because i got error when i want create there is always roll back my execution so i cannot insert to my database. and my data cannot insert to my database always rollback but there is no error capture here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...