我的删除操作不是删除数据库中的重新编码。
我的实体类:
@Entity
@Table(name= "User")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
private String userName,password,type,fullName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fName) {
this.fullName = fName;
}
@Column(name = "USER_ID")
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
@Entity
@Table(name= "Cart")
public class Cart {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
private String userName;
private String itemSkus;
private String itemsQuantity;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "USER_ID")
public String getUserName() {
return userName;
}
public void setUserName(String uName) {
this.userName = uName;
}
public String getItems(){
return this.itemSkus;
}
public void setItems(String items){
this.itemSkus=items;
}
public String getItemsQuantity(){
return this.itemsQuantity;
}
public void setItemsQuantity(String itemsQ){
this.itemsQuantity=itemsQ;
}
}
购物车的DAO类方法如下:
public int deleteCart(String userID){
Session currentSession=sessionObject.getSession();
//String query="from Cart Where userName :uName";
String query="DELETE FROM Cart where userName = :uName";
Query queryResult = currentSession.createQuery(query);
queryResult.setParameter("uName", userID);
int result = queryResult.executeUpdate();
System.out.println("Cart delete result "+result);
return result;
}
我尝试在MySQL工作台中运行查询,并且表格更新得很好。只有休眠它不更新。
我最终在更新查询结果中有多个结果。
答案 0 :(得分:1)
将查询置于事务中begin
,execute the delete query
,最后commit
事务,并在发生错误或异常时rollback
:
public int deleteCart(String userID){
Session currentSession=sessionObject.getSession();
Transaction tr= currentSession.beginTransaction();
//String query="from Cart Where userName :uName";
try{
String query="DELETE FROM Cart where userName = :uName";
Query queryResult = currentSession.createQuery(query);
queryResult.setParameter("uName", userID);
int result = queryResult.executeUpdate();
tr.commit();
System.out.println("Cart delete result "+result);
return result;
} catch (Exception ex) {
tr.rollback();
return null;
}
}
答案 1 :(得分:0)
您的会话需要刷新。在 prinltln 之前添加此行。
currentSession.flush();
System.out.println("Cart delete result "+result);