0

エンティティ A とエンティティ B があるとします。エンティティ A は B と @OneTomany 関係を持っています。

1つ以上の子オブジェクトが関連付けられている場合にのみ、Aの行を永続化したいのですが、それ以外の場合は例外をスローします。

休止状態で上記の要件を達成するにはどうすればよいですか

4

2 に答える 2

1

エンティティクラス:Register.class

パブリッククラス登録{

プライベートLongregId;

@OneToMany(mappedBy = "reg")

private Set addrSet;

public Set getAddrSet(){

    return addrSet;

}

public void setAddrSet(Set<Address> addrSet) {
    this.addrSet = addrSet;
}

}

エンティティクラス:Address.java

パブリッククラスアドレス{

オブジェクト値;

@ManyToOne

プライベート登録登録;

public Register getReg(){

    return reg;

}

public void setReg(Register reg) {
    this.reg = reg;
}

}

public void class searchObject(){

パブリックリストlst; パブリックレジスタsearchRegisterRow(Long regId){

  Session session = null;

 SessionFactory sessionFactory = null;

 register result = null; 

    try{    

       sessionFactory = new Configuration().configure().buildSessionFactory();      
        session =sessionFactory.openSession();
       String SQL_QUERY ="from Register r where r.redId = "+regId;
       Register reg = session.createQuery(SQL_QUERY);  

             for(Iterator it=lst.iterator();it.hasNext();){


                             reg=(Register)it.next();

            if(reg.getAddrSet().size() > 0){

                              result = reg;

                            }
                            else{

                                throw new Exception();

                            }

        }

        return result;
    }
    }catch(Exception e){

        System.out.println(e.getMessage());

    }finally{
        // Actual contact insertion will happen at this step
        session.flush();

        session.close();

        }

}}

上記のコードを試してみるべきだと思います。これはあなたを助けます。

于 2012-11-28T08:51:17.720 に答える
1

使用している Hibernate のバージョンについて言及するのを怠りました。いずれにせよ、これは検証の範囲内です。幸いなことに、Hibernate 3 と 4 の両方で、Hibernate Validator を利用してジョブを実行できます。

public class EntityB implements Serializable {
}

public class EntityA implements Serializable {
    @NotNull
    @Size(min = 1)
    private Set<EntityB> relatedEntities;
}

これを行うには、Hibernate Validator jar をプロジェクトに取り込む必要がある場合があります。

于 2012-11-28T07:46:30.380 に答える