两张表
@Entity
@Table (name = "CP_ROLE", schema = "dbo", catalog = "FusionCP")
public class Role extends BaseDomain
{ private Set <Person> persons = new HashSet <Person> (); @ManyToMany (mappedBy = "roles",cascade=CascadeType.MERGE)
public Set <Person> getPersons ()
{
logger.entering ();
if (logger.isExitingLoggable ())
{
logger.exiting (String.valueOf (persons));
}
return persons;
}
@Entity
@Table (name = "CP_PERSON", schema = "dbo", catalog = "FusionCP")
public class Person extends OutDomain implements java.io.Serializable
{ @ManyToMany (cascade=CascadeType.MERGE)
@JoinTable (name = "CP_PERSON_ROLE_MAPPING", inverseJoinColumns = @JoinColumn (name = "RoleID"), joinColumns = @JoinColumn (name = "PersonID"))
public Set <Role> getRoles ()
{
logger.entering ();
if (logger.isExitingLoggable ())
{
logger.exiting (String.valueOf (roles));
}
return roles;
}从 PERSON 表 我能吧 中间表的 删除了
但 从ROLE 表 中间表 我删不掉
删除 PERSON 我这么写的
Person personInDataBase = personDAO.findById (person.getId ());
personInDataBase.getRoles ().clear ();
personDAO.merge (personInDataBase);
personDAO.flush ();
personDAO.clear ();
personDAO.delete (person);
用的 是这个getHibernateTemplate ()里面的方法原因 我大概 明白 就是 被维护端 不能删除
有什么办法 能解决吗 ?
@Entity
@Table (name = "CP_ROLE", schema = "dbo", catalog = "FusionCP")
public class Role extends BaseDomain
{ private Set <Person> persons = new HashSet <Person> (); @ManyToMany (mappedBy = "roles",cascade=CascadeType.MERGE)
public Set <Person> getPersons ()
{
logger.entering ();
if (logger.isExitingLoggable ())
{
logger.exiting (String.valueOf (persons));
}
return persons;
}
@Entity
@Table (name = "CP_PERSON", schema = "dbo", catalog = "FusionCP")
public class Person extends OutDomain implements java.io.Serializable
{ @ManyToMany (cascade=CascadeType.MERGE)
@JoinTable (name = "CP_PERSON_ROLE_MAPPING", inverseJoinColumns = @JoinColumn (name = "RoleID"), joinColumns = @JoinColumn (name = "PersonID"))
public Set <Role> getRoles ()
{
logger.entering ();
if (logger.isExitingLoggable ())
{
logger.exiting (String.valueOf (roles));
}
return roles;
}从 PERSON 表 我能吧 中间表的 删除了
但 从ROLE 表 中间表 我删不掉
删除 PERSON 我这么写的
Person personInDataBase = personDAO.findById (person.getId ());
personInDataBase.getRoles ().clear ();
personDAO.merge (personInDataBase);
personDAO.flush ();
personDAO.clear ();
personDAO.delete (person);
用的 是这个getHibernateTemplate ()里面的方法原因 我大概 明白 就是 被维护端 不能删除
有什么办法 能解决吗 ?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货