Java JPA hibernate部分一对多连接表
我有文件和电子邮件。 有些文件会附加到电子邮件中,它们只会附加一次。 我可以通过一个只有email\u id和file\u id的附件表来实现这一点 电子邮件实体:Java JPA hibernate部分一对多连接表,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,我有文件和电子邮件。 有些文件会附加到电子邮件中,它们只会附加一次。 我可以通过一个只有email\u id和file\u id的附件表来实现这一点 电子邮件实体: @Entity @Table(name = "email") public class Email { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @OneToMany(mappedBy = "ema
@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;
}
问题是并非所有文件都是附件,因此我不希望文件中的电子邮件实体。
有没有其他方法可以做到这一点?
我想继承可能是新的实体附件
扩展文件
更新:
我可能应该多解释一点:如果我有Case
,它有一个File
的列表,并且Case
也有一个Email
的列表,它也有一个File
的列表,我会让文件出现在Case
实体中的两个位置。如果我有一个附件
实体,它也是一个文件
,我会有它,这样在发送电子邮件的情况下,实体就不能从那里更新,我会使文件
不可删除。想法?事实上,一封电子邮件可以有多个文件,所以为什么不这样实现呢。从电子邮件到文件都有一对多的关系。这并不意味着你必须有电子邮件的文件。文件可以是0或更多。别把事情弄复杂了。我认为在这种情况下使用继承没有任何意义。关联不必是双向的。你想要的只是一个单向的、单一的协会。顺便说一句,你们的双向关联的当前映射是错误的。谢谢各位,我为这个问题补充了一点,你们能看一下吗?
@Entity
@Table(name = "file")
public class File {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@ManyToOne
private Email email;
}