Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠父子关系_Java - Fatal编程技术网

Java 休眠父子关系

Java 休眠父子关系,java,Java,假设我有实体A和实体B。实体A和B有@OneTomany关系 我希望仅当一行有一个或多个子对象与其关联时,才将该行持久化,否则将引发异常 如何在hibernate中实现上述要求您忘了提到您使用的hibernate版本。在任何情况下,这都属于验证的范围。幸运的是,在Hibernate 3和4中,您都可以利用Hibernate Validator来完成这项工作: public class EntityB implements Serializable { } public class Entity

假设我有实体A和实体B。实体A和B有@OneTomany关系

我希望仅当一行有一个或多个子对象与其关联时,才将该行持久化,否则将引发异常


如何在hibernate中实现上述要求

您忘了提到您使用的hibernate版本。在任何情况下,这都属于验证的范围。幸运的是,在Hibernate 3和4中,您都可以利用Hibernate Validator来完成这项工作:

public class EntityB implements Serializable {
}

public class EntityA implements Serializable {
    @NotNull
    @Size(min = 1)
    private Set<EntityB> relatedEntities;
}
公共类EntityB实现可序列化{
}
公共类EntityA实现可序列化{
@NotNull
@尺寸(最小值=1)
私有集关联实体;
}

为了能够做到这一点,您可能需要将Hibernate验证器JAR拉入项目中。

实体类:Register.class

公共班级登记册{

私人长注册

@OneToMany(mappedBy=“reg”)

私有集地址集

公共集getAddrSet(){

}

公共void类searchObject(){

公共列表lst; 公共注册表搜索注册表Row(长注册表){

} }

我想你应该试试上面的代码。这会对你有所帮助

    return addrSet;

}

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

}

public void setReg(Register reg) {
    this.reg = reg;
}
  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();

        }