请教EJB Persistence高手 Many-To-Many 如何只更新主表和中间表

GavinXu1980 2008-06-21 01:52:48
一个Teacher 一个Student 表,多对多关系,关联表Teacher_Student
想要实现下面这个功能该怎么配置呢
1、创建一条Teacher的数据记录,并在Teacher_Student中间表插入关联数据,但是Student数据是不需要操作的。
2、根据TeacherID 删除Teacher_Student中间表数据。

自己找了好久,没有找到合适的资料,尝试着不通的配置也没有找到出路,

部分代码如下,但是
Teacher类:Annotation
@ManyToMany(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
@JoinTable(name = "Teacher_Student",
joinColumns = { @JoinColumn(name = "TeacherID", referencedColumnName = "TeacherID") },
inverseJoinColumns = { @JoinColumn(name = "StudentID", referencedColumnName = "StudentID") })

Student类:Annotation
@ManyToMany(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY, mappedBy = "teachers")

...全文
175 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljm1227134894 2012-07-18
  • 打赏
  • 举报
回复
遇到了同样的问题,期待。。。
老紫竹 2008-06-21
  • 打赏
  • 举报
回复
long[] studentIds = 。。。
List<Student> list = new ArrayList<Student>();
for(long id : studentIds){
list.add(em.find(Student.class,id);
}
teacher.setStudents(list);
老紫竹 2008-06-21
  • 打赏
  • 举报
回复
我给你的就是n:n的映射啊!可以用的,我一直在用!
GavinXu1980 2008-06-21
  • 打赏
  • 举报
回复
简单来说一个多对多映射。我要实现可以控制只操作一个主表或者一个从表数据,或者可以操作主表+中间表数据,但是不会干扰到从表数据。

我刚刚在其他论坛上找到一下资料,里面的回答全是要将一个多对多映射成一个多对一 一个一对多

是否还有其他方式呢?
老紫竹 2008-06-21
  • 打赏
  • 举报
回复
难道你的 Teacher 和 Student 里面的主键也是
TeatherID 和 StudentID 吗?
一般都习惯用 ID 的?

给你一个我的发言和附件的多对多的映射
2个主表的主键都是 ID
中间表是 POST_ID 和 ATTACHMENT_ID
  @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "T_POST_ATTACHMENT", joinColumns = @JoinColumn(name = "POST_ID", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "ATTACHMENT_ID", referencedColumnName = "ID"))
private List<Attachment> attachments;


67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧