У меня есть медиа-элемент, который можно прикрепить к пользователю, статье, бизнесу, продукту и другим объектам.
Лучший способ, который я нашел для решения этой проблемы, это иметь "object_id"", который является внешним ключом, и" object_type ", который будет содержать тип объекта (продукт, пользователь, статья и т. д.).
Является ли это лучшим подходом для создания объекта Media?
@Entity
@Table(name = "media")
public class Media implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Size(max = 25)
@Column(name = "filename", nullable = true, unique = false)
private String filename;
@Size(max = 12)
@Column(name = "object_type", nullable = true, unique = false)
private String objectType;
@Column(name = "object_id", nullable = true, unique = false)
private Long objectId;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@Where(clause = "object_type = business")
@JoinColumn(name = "object_id", referencedColumnName = "id", updatable = false, insertable = false)
private Business business;
... ... ... //briefed
}