posted 16 years ago
I am confused how hibernate Session's build-in method update(Object) actually works. Suppose I have a table like
STUDENT(ID, name, address, phone)
where ID is the Oracle sequence ID, and in the hibernate mapping xml file I have <id name="id" column="ID" type="long">
<generator class="sequence">
<param name="sequence">STUDENT_SEQ</param>
</generator>
</id>
And in code I have
******
Student student = new Student();
student.setName();
student.setAddress();
student.setPhone();
... // hibernate session creation
... // session stuff
session.update(student);
*********
Now, what does "update" exactly do here ? Since "ID" is the PK and it is generated by oracle sequence, it will never be identical. So how can I actually "update" a row ? for example if there is a row (john, 100 main st, 222-123-1234) before I run the code and I intend to update this row for "john" by changing the address and phone number to (john, 200 main st, 111-222-3333). But since hibernate creates a new ID for it and ID is PK, it is not supposed to "update" the row I think.. It should only "insert" this new row. but that's not what I want. So how can I update that row (what I actually want to do is "updte STUDENT set s.address =:address, s.phone := phone where s.name = :name", but that information seems not be incorporated in a simple "session.update(student)"...)