JPA使用连接表来休眠部分一对多

时间:2014-10-09 15:54:21

标签: java hibernate jpa orm

我有文件和电子邮件。 有些文件附加到电子邮件中,它们会附加一次。 我可以使用附件表来实现这一点,只需要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的列表中包含FileCase也有Email的列表它也有一个File列表,我的文件显示在Case实体的2个位置。如果我的Attachment实体也是File,那么我已经拥有它,因此如果发送了电子邮件,实体就无法从那里更新,而且我是&#39} ; d使File不可取消。想法?

0 个答案:

没有答案