У меня есть поле, которое не является идентификатором первичного ключа. Как я могу получить данные с помощью репозитория JPA через этот не первичный ключ? - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть модель Пользователь. Есть поле, которое является контактным, и это не первичный ключ. Как я могу получить данные, используя этот ключ? это уникальный ключ.

Это моя модель.

@Entity
@Table(name = "tbl_user")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
long userId;

@Column(name = "name")
String name;

@Column(name = "email")
String email;

@Column(name = "contact")
String contact;

@Column(name = "category")
String category;

public long getUserId() {
    return userId;
}

public void setUserId(long userId) {
    this.userId = userId;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getContact() {
    return contact;
}

public void setContact(String contact) {
    this.contact = contact;
}

public String getCategory() {
    return category;
}

public void setCategory(String category) {
    this.category = category;
}

public User() {
}

}

Это метод внутри сервисного уровня.

public User getUserByContact(String contact) {
        Optional<User> result = userRepository.findByContact(contact);
        User user = result.get();
        return user;
    }

Это хранилище.

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

    @Query("select u from User u where u.contact = ?1")
    User findByContact(String contact);
}

Я получаю сообщение об ошибке «выберите пользователя из пользовательского u, где u.contact =? 1» в этой части в разделе «Пользователь», и в нем говорится «невозможно разрешить символ пользователя». Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 26 апреля 2019

Оставьте часть @Query, эта часть не нужна, если вы расширяете JpaRepository. Как указано в документации JPA получает запрос из имени метода.
Я не уверен, является ли это проблемой, но в вашем классе сущностей вы используете long для идентификатора и в вашемопределение хранилища (JpaRepository<User, Long>), которое вы используете Long.Поправьте меня, если это не проблематично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...