Допустим, у меня есть эти сущности
Компания , Пользователь , Проект и Рекомендация
Но я хочу выделить таблицу Project и Рекомендации . Ниже приведен пример сущности.
//Project entity
@Column(name = "id")
private String id;
@Column(name = "user_id")
private String userId;
@Column(name = "company_id", nullable = true)
private String companyId;
//Recommendation entity
@Column(name = "id")
private String id;
@Column(name = "user_id")
private String userId;
@Column(name = "company_id", nullable = true)
private String companyId;
@OneToMany(fetch = FetchType.LAZY)
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumns({
@JoinColumn(name = "id", referencedColumnName = "user_id", nullable = true, insertable = false, updatable = false),
@JoinColumn(name = "id", referencedColumnName = "company_id", nullable = true, insertable = false, updatable = false)
})
private List<Project> projects;
Приведенные выше таблицы являются лишь иллюстрацией, извините, если это не имеет смысла. Я хочу присоединиться к таблице проекта внутри таблицы сертификации. Они оба не связаны напрямую, поэтому мне нужно объединиться, используя эти 2 столбца, userId и companyId.
Однако, companyId может иметь значение null. И всякий раз, когда он равен нулю, я все еще хочу присоединиться к таблице только по userId.
То, чего я хочу достичь, вероятно, так:
Select from Recommendation rec Join Project project
on rec.user_id = project.user_id and (rec.company_id = project.company_id OR rec.company_id is null)
Можно ли использовать hibernate / JPA аннотации для достижения этой цели?
Мой проект использует Hibernate 5 недавно