关于hibernate中多个OneToMany情况如何设计映射关系

标题说的不够清楚,具体是这样的:

有一个附件表,一个用户表,一个课程表,一个实验表。

一个附件属于某个用户的某个课程的某个实验,但是一个用户可以有多个附件,一个课程也可以有多个附件,一个实验也能有多个附件。

所以就成了:

[code="java"]public class Attachment {

@ManyToOne
   //用户
public User user;
@ManyToOne
   //课程
public Course course;
   //实验
@ManyToOne
public Task task;


[/code]

感觉这样设计初始化时需要同时获得user,course和task。 比较麻烦,这样设计是不是有问题? 更合理的设计是怎样的? 请指教。

我觉得这样设计没有什么问题

多对一,这样设计不感觉有问题。

如果 “一个用户表,一个课程表,一个实验表 ”它们三个的附件没有关系的话,你可以把附件表拆成三个。 这样有助于查询速度。。

一个附件属于某个用户的某个课程的某个实验。
我理解的意思是“一个用户可以有多个课程,一个课程也可以有多个实验,一个实验也能有多个附件”,实验和附件应该是聚合或组合关系
类关系图如下

User(1) - (*)Course(1) - (*)Task(1) - (*)Attachment

Attachment应该如下:

[code="java"]
public class Attachment {

       //实验  
    @ManyToOne  
    public Task task;  
}  

[/code]

@ManyToOne  
   //用户  
public User user;  
@ManyToOne  
   //课程  
public Course course;  

这两个是冗余属性,如果是经常要用到又有性能问题,可以冗余过来(从本例来看,这两个冗余属性应该是不会变化的,如果变化还要考虑数据同步问题)。
另外,还可以考虑延迟加载嘛