У меня есть 2 таблицы, которые могут быть связаны друг с другом через вторичные столбцы, отличные от PK. Более того, имена столбцов для этого совпадения различаются в каждой таблице. То есть
@Entity
@Table(name = "PLANS_T")
public class Plans {
private Integer id; // PK
//...
private String secondaryIdentifier; // Should be matched with TRAINEES.auxiliaryIdentifier
//...
}
@Entity
@Table(name = "TRAINEES_T")
public class Trainee {
private Integer id; // PK
//...
private String auxiliaryIdentifier; // Should be matched with PLANS.secondaryIdentifier
}
Связь между PLANS
и TRAINEE
- «многие к одному»: у вас может быть много планов для стажера.
Мне нужно правильно аннотировать их чтобы указать, что PLANS_T.secondaryIdentifier
следует использовать с TRAINEES_T.auxiliaryIdentifier
для JOIN
s (например, в API критериев, которому нужен путь соединения от одной таблицы к другой).
Но я не могу используйте типичные примеры например,
@Entity
class Trainee {
@OneToMany(mappedBy = "plan")
private Collection<Plans> plans = new ArrayList<Plans>();
}
@Entity
class Plans {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="auxiliary_identifier") // Where do I specify "secondaryIdentifier", a non-PK column?
private Trainee trainee;
}
Мне нужен способ указать оба столбца, отличных от PK, в аннотациях. При использовании Criteria API эти аннотации предоставляют путь для создания путей соединения.