Hibernate - 更新表中的主键"id"列

It'*_* me 6 java hibernate hbm

在我的Java应用程序中,我使用hibernate .hbm文件来访问数据库; 是否可以更新表中的主键"id"列; 我的.hbm文件中的'id'列如下:

<hibernate-mapping package="org.jems.user.model">
<class name="Student_Details" table="t_student">
<id name="id" type="int" column="id">
<generator class="increment"/>
</id>
<property name="name" column="name" type="string" unique="true" not-null="true" />
<property name="description" column="description" type="string"  />
<property name="comments" column="comments" type="string"  />
<property name="active"     column="isActive"   type="boolean"  not-null="true" />
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

lic*_*gwu 7

试试这个:

String hql="update table set id=? where id=? ";
Query query=HibernateSessionFactory.getSession().createQuery(hql);
query.setInteger(0,1);
query.setInteger(1,2);
query.executeUpdate();
HibernateSessionFactory.getSession().beginTransaction().commit();
Run Code Online (Sandbox Code Playgroud)

或者只是使用sql:

String sql = "update table set id = ? where id= ?"
Session session = HibernateSessionFactory.getSession();  
SQLQuery query = session.createSQLQuery(sql);
query.setParameter(0, 1);
query.setParameter(1, 2);  
Run Code Online (Sandbox Code Playgroud)


dce*_*chi 5

不.Hibernate不允许更改主键.通常,如果需要更改主键值,则主键值不应更改,而主键列不是主键的良好候选者.