[color=red]这是我的roomPOJO[/color]
package org.shj.hotels.pojo;
import java.util.HashSet;
import java.util.Set;
/**
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();
试试这样可不可以