У меня проблема, когда я хочу вставить данные и столбец 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