2016-03-24 8 views
1

外部制約で例外を発生させているコレクション型を持つhibernate deleteでスタックしました。ここで文字列型コレクションでhibernate deleteを実行します

は私のHibernateのテーブル

@Entity 
@Table 
public class FrontRequest implements Serializable { 

    private static final long serialVersionUID = 1L; 


    @Id 
    @GeneratedValue(strategy= GenerationType.AUTO) 
    private Long tutorfront_id; 

    @Column 
    private String tutorialType; 

    @Column 
    private String tutorialLevel; 

    @ElementCollection(fetch=FetchType.EAGER) 
    @Fetch(value = FetchMode.SELECT) 
    private Collection<String> tutorialSubjects= new HashSet<String>(); 

    @Column 
    private String tutorialCity; 

    @Column 
    private String noOfStudent; 

    @Column 
    private String classWeek; 

    @Column 
    private String tutionFee; 

    @Column 
    private String tutionFeerate; 

    @Column 
    private String tutorSex; 

    @Column 
    private String tutorEducation; 


    @Column 
    private Date postingDate; 

    @Column 
    private String studentSchool; 
} 

、ここでは、オブジェクト

public boolean removeFrontRequest(Long id) { 
     // TODO Auto-generated method stub 
     Session session= SessionFactoryImpl.returnService().getCurrentSession(); 
     Transaction tx; 

     if(session.getTransaction() != null 
       && session.getTransaction().isActive()){ 
      tx=session.getTransaction(); 
     } 
     else{ 
      tx= session.beginTransaction(); 
     } 


     try{ 

      Query query=session.createQuery("from FrontRequest where tutorfront_id =:id"); 
      query.setParameter("id", id); 
      FrontRequest frontRequest=(FrontRequest) query.list().get(0); 
      session.delete(frontRequest); 
      if(!tx.wasCommitted()) { 
        tx.commit(); 
      } 
     } 
     catch(Exception e){ 
     return false; 
     } 
     return true; 
    } 

を削除するには、私のサービスメソッドである。しかし、それはロックで例外を与えている: SQLエラー:1205、SQLStateの:40001 ロック待ちタイムアウトを超えました。トランザクションを再開してみてください

私が間違っていることをお考えできますか?ここをクリック。

ありがとうございました

+0

[こちらの投稿をご覧ください](http://stackoverflow.com/questions/5836623/getting-lock-wait-timeout-exceeded-try-restarting-transaction-even-though-im)助けてください。 – rcyza

+0

他のいくつかのプロセスは、削除しようとしているテーブルまたはレコードをロックしています。それが何であるかを見つけてそれをやめる。 [ここ](http://www.coderanch.com/mobile/t/447114/ORM/databases/Error-Deleting-Persisted-Objects-Hibernate?foo=a)を読んでください。 –

答えて

0

!= = ==を置き換えてif条件を修正してください。コミット後もトランザクションを終了します。

+0

トランザクションを終了する方法。 –

+0

こんにちは!なぜ私は知らないのですが、うまくいきません。私は実際にこの上に立ち往生しています。 SQLステートメント。どんな方法でも、今働いています。ありがとう –