java - 使用 HIBERNATE 将数据插入 MYSQL 后 IOConsole 更新程序断言错误
问题描述
使用休眠将数据插入 mysql 后,我在 Eclipse 上收到 IOConsole 更新程序资产失败错误,这种情况导致程序跳过一些代码并继续以错误的方式工作。当我取消将值保存到数据库的插入方法时,一切正常。
j2n-hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- SQL Dialect -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/tutorialdb</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">*******</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- it was false , i make true -->
<property name="show_sql">true</property>
<!-- Specifying Session Context -->
<property name="hibernate.current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>
<!-- Mapping With Model Class Containing Annotations -->
<mapping class="com.binance.api.examples.TradeStats" />
</session-factory>
</hibernate-configuration>
HibernateUtil.java:
package com.binance.api.examples;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class HibernateUtil {
private static SessionFactory sessionFactory = null;
static {
try{
loadSessionFactory();
}catch(Exception e){
System.err.println("Exception while initializing hibernate util.. ");
e.printStackTrace();
}
}
public static void loadSessionFactory(){
Configuration configuration = new Configuration();
configuration.configure("/j2n-hibernate.cfg.xml");
configuration.addAnnotatedClass(TradeStats.class);
ServiceRegistry srvcReg = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(srvcReg);
}
public static Session getSession() throws HibernateException {
Session retSession=null;
try {
retSession=sessionFactory.openSession();
}catch(Throwable t){
System.err.println("Exception while getting session.. ");
t.printStackTrace();
}
if(retSession == null) {
System.err.println("session is discovered null");
}
return retSession;
}
}
贸易统计.java
package com.binance.api.examples;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="tradestats")
public class TradeStats implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="TRADE_ID")
private Long tradeId;
@Column(name="COIN_NAME")
private String coinName;
@Column(name="COIN_BOUGHT_LAST_PRICE")
private double coinBoughtLastPrice;
@Column(name="COIN_SOLD_LAST_PRICE")
private double coinSoldLastPrice;
@Column(name="STOP_VALUE")
private double stopValue;
@Column(name="PROFIT_VALUE")
private double profitValue;
@Column(name="GAIN")
private double gain;
@Column(name="LOSS")
private double loss;
@Column(name="PREDICTION_PRICE")
private double predictionPrice;
@Column(name="PRICE_AVERAGE")
private double priceAverage;
@Column(name="TOTAL_GAIN")
private double totalGain;
@Column(name="TOTAL_LOSS")
private double totalLoss;
@Column(name="DURATION")
private int duration;
public Long getTradeId() {
return tradeId;
}
public void setTradeId(Long tradeId) {
this.tradeId = tradeId;
}
public String getCoinName() {
return coinName;
}
public void setCoinName(String coinName) {
this.coinName = coinName;
}
public double getCoinBoughtLastPrice() {
return coinBoughtLastPrice;
}
public void setCoinBoughtLastPrice(double coinBoughtLastPrice) {
this.coinBoughtLastPrice = coinBoughtLastPrice;
}
public double getCoinSoldLastPrice() {
return coinSoldLastPrice;
}
public void setCoinSoldLastPrice(double coinSoldLastPrice) {
this.coinSoldLastPrice = coinSoldLastPrice;
}
public double getStopValue() {
return stopValue;
}
public void setStopValue(double stopValue) {
this.stopValue = stopValue;
}
public double getProfitValue() {
return profitValue;
}
public void setProfitValue(double profitValue) {
this.profitValue = profitValue;
}
public double getGain() {
return gain;
}
public void setGain(double gain) {
this.gain = gain;
}
public double getLoss() {
return loss;
}
public void setLoss(double loss) {
this.loss = loss;
}
public double getPredictionPrice() {
return predictionPrice;
}
public void setPredictionPrice(double predictionPrice) {
this.predictionPrice = predictionPrice;
}
public double getPriceAverage() {
return priceAverage;
}
public void setPriceAverage(double priceAverage) {
this.priceAverage = priceAverage;
}
public double getTotalGain() {
return totalGain;
}
public void setTotalGain(double totalGain) {
this.totalGain = totalGain;
}
public double getTotalLoss() {
return totalLoss;
}
public void setTotalLoss(double totalLoss) {
this.totalLoss = totalLoss;
}
public double getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
@Override
public String toString() {
return "TradeStats [tradeId=" + tradeId + ", coinName=" + coinName + ", coinBoughtLastPrice="
+ coinBoughtLastPrice + ", coinSoldLastPrice=" + coinSoldLastPrice + ", stopValue=" + stopValue
+ ", profitValue=" + profitValue + ", gain=" + gain + ", loss=" + loss + ", predictionPrice="
+ predictionPrice + ", priceAverage=" + priceAverage + ", totalGain=" + totalGain + ", totalLoss="
+ totalLoss + ", duration=" + duration + "]";
}
}
贸易统计道.java:
package com.binance.api.examples;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
@SuppressWarnings("deprecation")
public class TradeStatsDao {
@SuppressWarnings("unchecked")
public List<TradeStats> getTradeStatsList(){
Session session = null;
List<TradeStats> tradeList = null;
try {
session = HibernateUtil.getSession();
String queryStr = "Select trade from TradeStats";
@SuppressWarnings("rawtypes")
Query query = session.createQuery(queryStr);
tradeList = query.list();
} catch(Exception ex) {
ex.printStackTrace();
// handle exception here
} finally {
try {if(session != null) session.close();} catch(Exception ex) {}
}
return tradeList;
}
public TradeStats getTradeStatsById(Long tradeId){
Session session = null;
TradeStats trd = null;
try {
session = HibernateUtil.getSession();
trd = session.get(TradeStats.class,tradeId);
} catch(Exception ex) {
ex.printStackTrace();
// handle exception here
} finally {
try {if(session != null) session.close();} catch(Exception ex) {}
}
return trd;
}
public void insertTradeStats(TradeStats trd) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSession();
transaction = session.beginTransaction();
session.save(trd);
System.out.println();
System.out.println("inserted tradestats : "+trd.getCoinName());
transaction.commit();
} catch(Exception ex) {
ex.printStackTrace();
// handle exception here
if(transaction != null) transaction.rollback();
} finally {
try {if(session != null) session.close();} catch(Exception ex) {}
}
}
public void deleteTradeStats(TradeStats trd) {
Session session = null;
Transaction transaction = null;
try {
session = HibernateUtil.getSession();
transaction = session.beginTransaction();
session.delete(trd);
transaction.commit();
System.out.println();
System.out.println("deleted employee: "+trd.getCoinName());
} catch(Exception ex) {
ex.printStackTrace();
// handle exception here
if(transaction != null) transaction.rollback();
} finally {
try {if(session != null) session.close();} catch(Exception ex) {}
}
}
}
解决方案
推荐阅读
- vim - 在 Vim 中使用 vmap 注释和取消注释 css 代码
- python-2.7 - Pyral 无法解析返回的父对象
- mysql - 是一种优化大型mysql查询的方法吗?
- opengl-es-2.0 - Android OpenGLES 剩余() < 大小 < 需要
- vuejs2 - 未调用 Nuxt 自定义模块挂钩
- r - rmarkdown 中 isoslides 演示文稿中的格式代码块选项
- python-2.7 - 在文件中搜索确切的字符串
- python-3.x - AWS EMR 上的 python 3 和 tensorflow
- oracle - 同一台 Windows 10 64 位 PC 上的 Oracle JDeveloper、Forms 6i 和 Forms 10g
- html - Bootstrap 滚动条仅在调整窗口大小时激活