一个HQL语句不会写,10W火急啊~!!!!

[color=red]这是我的roomPOJO[/color]
package org.shj.hotels.pojo;
import java.util.HashSet;
import java.util.Set;

/**

  • Room entity.
  • @author MyEclipse Persistence Tools */

public class Room implements java.io.Serializable {

// Fields

private Integer roomid;
private Roomtype roomtype;
private Roomstate roomstate;
private String roomname;
private String roomprice;
private String roomexplain;
private Set openrooms = new HashSet(0);

// Constructors

/** default constructor */
public Room() {
}

/** full constructor */
public Room(Roomtype roomtype, Roomstate roomstate, String roomname,
        String roomprice, String roomexplain, Set openrooms) {
    this.roomtype = roomtype;
    this.roomstate = roomstate;
    this.roomname = roomname;
    this.roomprice = roomprice;
    this.roomexplain = roomexplain;
    this.openrooms = openrooms;
}

// Property accessors

public Integer getRoomid() {
    return this.roomid;
}

public void setRoomid(Integer roomid) {
    this.roomid = roomid;
}

public Roomtype getRoomtype() {
    return this.roomtype;
}

public void setRoomtype(Roomtype roomtype) {
    this.roomtype = roomtype;
}

public Roomstate getRoomstate() {
    return this.roomstate;
}

public void setRoomstate(Roomstate roomstate) {
    this.roomstate = roomstate;
}

public String getRoomname() {
    return this.roomname;
}

public void setRoomname(String roomname) {
    this.roomname = roomname;
}

public String getRoomprice() {
    return this.roomprice;
}

public void setRoomprice(String roomprice) {
    this.roomprice = roomprice;
}

public String getRoomexplain() {
    return this.roomexplain;
}

public void setRoomexplain(String roomexplain) {
    this.roomexplain = roomexplain;
}

public Set getOpenrooms() {
    return this.openrooms;
}

public void setOpenrooms(Set openrooms) {
    this.openrooms = openrooms;
}

}
这是我的数据库
create table room(
roomid int primary key identity(1,1),
roomname varchar(50),
roomtypeid int references roomtype(roomtypeid),
roomprice varchar(50),
roomstateid int references roomstate(roomstateid),
roomexplain varchar(50)
)
[color=red]insert into room values('101',1,'100',1,'普通标准间+空净房')[/color]
我可以得到这条红色标记的数据也就是说我可以在Action中得到这条数据
但是我想修改这条数据roomtypeid=1修改为roomtypeid=4
我的DAO是extends HibernateDaoSupport
这个逻辑该如何实现啊或者这个HQL语句怎么写呢?10W火急啊
小生在这里先谢谢各位了

楼上错了吧?
更新数据的条件一般应该是根据主键来的
你的hql是批量更新,没有限定主键

楼主,假设按照你说的,你在action中获得了这条数据,那么hibernate应该是还给你一个对象的,设为room变量名
不过由于你做了关系配置,可以简化下
不要用封装的update,用hql会方便些
String hql = "update Room r set r.Roomtype.roomtypeid=4 where r.roomid="+room.getRoomid();

要用update方法的话,你就要
get(Roomtype.class, 4)
然后room.setRoomtype(传入上面获得的roomtype对象)
之后直接更新这个room
update(room)就可以了

那我说一下 这个 hql 语句怎么写吧.注意一下都是实体对象的属性,并不是表中的字段名称。
你已经查出了这条信息,就可以得到这条记录的roomname的值,就更加 roommnae进行修改。
如下:
String hql = "update Room r set r.Roomtype.roomtypeid=4 where r.roomname=101";

Room room=(Room)session.load(1);
room.setRoomid(4);
session.update();
试试这样可不可以