0

如何从 Hibernate 中删除对象?

 Session session = HibernateSession.getSessionFactory().openSession();
        org.hibernate.Transaction tx = session.beginTransaction();
        int q = session.createQuery("from Modele where (model='"+u.getModel() +"' and markaid='"+u.getMarki().getId()+"'").executeUpdate();
      //  session.delete(u);

        session.getTransaction().commit();

信息:不支持!使用 AST 翻译器...

改为使用时session.delete(u) ,我得到了这个

INFO:在删除处理中处理瞬态实体

CREATE TABLE modele
(
  id serial NOT NULL,
  markaid integer NOT NULL,
  cena numeric(100,2),
  model character varying(32),
  CONSTRAINT k_glwny PRIMARY KEY (id),
  CONSTRAINT obcy FOREIGN KEY (markaid)
      REFERENCES marki (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE
)

<hibernate-mapping>
    <class name="bazaMap.Modele" table="modele" schema="public">
        <id name="id" type="int">
            <column name="id" />
            <generator class="identity" />
        </id>
        <many-to-one name="marki" class="bazaMap.Marki" fetch="select">
            <column name="markaid" not-null="true" />
        </many-to-one>
        <property name="cena" type="java.lang.Double">
            <column name="cena" scale="0" />
        </property>
        <property name="model" type="string">
            <column name="model" length="32" />
        </property>
        <set name="wypozyczenias" inverse="true">
            <key>
                <column name="modelid" not-null="true" />
            </key>
            <one-to-many class="bazaMap.Wypozyczenia" />
        </set>
    </class>
</hibernate-mapping>

这也行不通

session.createQuery("from Modele where model = :mmodel and markaid = :mmarkaid").setParameter("mmodel", u.getModel()).setParameter("mmarkaid", u.getMarki().getId()).executeUpdate();
4

1 回答 1

0

我相信您的 HQL 缺少导致 AST 错误的 DELETE 关键字(基本上是 HQL 语法错误。)它应该是:

DELETE from Modele where (model='"+u.getModel() +"' and markaid='"+u.getMarki().getId()+"'"

如果您想使用 delete 方法(实际上在 hibernate 3 中已弃用以支持使用 HQL),您必须确保在删除实体之前将其加载到您正在删除的同一会话中。

我通常使用 HQL 样式删除,尽管我建议使用命名参数而不是字符串连接。

于 2013-01-25T04:58:47.697 回答