Давайте предположим, что я определил следующие Entity:Entity с двумя идентификаторами
@Entity
class User{
@Id
@GeneratedValue
@Column(name = "DB_ID")
private long id;
@Id
@Column(name = "LOGIN", unique = true)
private String code;
//setters, getters
}
Вопрос № 1.
Когда я использую метод .find(User.class, someId)
, какой ID мне нужно установить? Должен ли я использовать идентификатор длинного поля или код поля String? Или я могу использовать идентификатор длинного поля и код поля String одновременно?
Вопрос №2.
Если я хочу использовать метод .merge(user)
, в этом случае запись будет обновлена?
дело № 1: - идентификатор равна DB_ID, код не равен LOGIN
дело № 2: - идентификатор не равен DB_ID, код равен LOGIN
дело № 3: - idequals DB_ID и код равен LOGIN
или любое другое условие?
Являются ли эти идентификаторы независимыми? Если это так, нет никакого способа сделать это, объект должен иметь ровно один id (который может состоять из нескольких полей, хотя). В вашем случае «DB_ID» может быть фактическим id, а столбец «LOGIN» может иметь только уникальное ограничение и должен использоваться в запросе. – Thomas