我有文件和电子邮件。 有些文件附加到电子邮件中,它们会附加一次。 我可以使用附件表来实现这一点,只需要email_id和file_id。
电子邮件实体:
@Entity
@Table(name = "email")
public class Email {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@OneToMany(mappedBy = "email")
@JoinTable(
name="attachments",
joinColumns={@JoinColumn(name="email_id")},
inverseJoinColumns={@JoinColumn(name="file_id")})
private List<File> files;
}
文件实体
@Entity
@Table(name = "file")
public class File {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@ManyToOne
private Email email;
}
问题是并非所有文件都是附件,因此我不想要Email
实体中的File
实体。
有没有其他方法来实现这一目标?
我可能正在考虑继承,新实体Attachment
扩展File
。
更新
我可能应该多解释一下:如果我Case
的列表中包含File
,Case
也有Email
的列表它也有一个File
列表,我的文件显示在Case
实体的2个位置。如果我的Attachment
实体也是File
,那么我已经拥有它,因此如果发送了电子邮件,实体就无法从那里更新,而且我是&#39} ; d使File
不可取消。想法?