Hibernate Delete操作不更新MySql

时间:2015-03-01 21:06:00

标签: java mysql hibernate

我的删除操作不是删除数据库中的重新编码。

我的实体类:

    @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工作台中运行查询,并且表格更新得很好。只有休眠它不更新。

我最终在更新查询结果中有多个结果。

2 个答案:

答案 0 :(得分:1)

将查询置于事务中beginexecute 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);