java - 如何使用java在mysql中插入枚举列类型
问题描述
当我想插入数据并在 mysql 中有 enumtype 列时,我遇到了问题。但我的 sql 总是回滚我的创建。我的问题是如何在我想要创建的时候在 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);
这是我的枚举类
public enum enumOrderStatus {
NEW, PARTIALFILLED, FILLED, DONEFORDAY, CANCELLED, REJECTED, EXPIRED
}
这是我的第二个枚举类
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
解决方案
推荐阅读
- c# - 如何在 .NetCore 中将 kinesisEvent 失败从 Lambda 发送到 SQS
- java - ClassNotFoundException:org.springframework.boot.autoconfigure.security.oauth2.resource.OAuth2ResourceServerConfiguration
- c# - 为什么 OrderBy 不对数据进行排序?
- angular - 一旦通过 Angular 中的服务检索到 UserDataSource,如何修改它?
- python - 用 Python 块打开 VS
- sql - SQL中树的所有节点和子节点的自动编号
- angular - 无法通过在 Visual Studio Code 中启动 Angular 8 项目使 Chrome 调试器工作
- java - 重命名列后在 save() 处休眠未知列
- pandas - 有没有办法将数据框列表导出到 json?
- java - 是否可以使服务长期有效