2013-01-24 4 views
0

최대 절전 모드에서 개체를 어떻게 삭제합니까?최대 절전 모드 삭제

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(); 

정보 : 지원되지 않습니다. 대서양 표준시 변환기를 사용하여 ...

session.delete(u)를 사용하는 대신에 나는이

정보를 얻을 : 삭제 처리에 과도 개체를 처리

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(); 
+1

쿼리를 연결하지 마십시오. Query patern을 사용하는 것이 더 좋습니다. http://tackoverflow.com/questions/14458986/hibernate-having-difficulty-with-character-in-hql/14459137#14459137 – Taky

+0

@Taky : 동적 쿼리를 작성하기 위해 쿼리 매개 변수 또는 조건을 사용하는 것이 좋습니다. (쿼리 개체 패턴은 쿼리 작성을 해결하지 못합니다.) –

+0

@StefanSteinegger : 쿼리 개체 패턴 (http://martinfowler.com/eaaCatalog/queryObject.html) 정의 패턴에 조건 및 쿼리 매개 변수가 포함되어 있다고 생각합니까? – Taky

답변

0

저는 믿습니다 HQL에 AST 오류 (기본적으로 HQL 구문 오류)를 일으키는 DELETE 키워드가 누락되었습니다.

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

당신은 당신이 당신이 당신이 삭제하기 전에에서 삭제하는 것과 같은 세션에서 개체를로드 있는지 확인해야합니다 (실제로는 HQL을 사용하여 찬성 최대 절전 모드 3에서 더 이상 사용되지 않습니다) 삭제 방법을 사용하려면 그것.

일반적으로 HQL 스타일 삭제를 사용합니다. 그러나 문자열 연결 대신 명명 된 매개 변수를 사용하는 것이 좋습니다.