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