Спящий режим и настойчивость. Аннотировать неправильно

Я постараюсь рассказать вам всю мою проблему, не показывая много кода. Я использую DropWizard, и я пытаюсь понять, как использовать спящий режим с моей mysql DB

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "mobile", nullable = false)
private String mobile;

В приведенном выше примере у меня есть переменная с именем id и другая мобильная. Идентификатор аннотируется с помощью @Id. Мне нужно знать, как правильно комментировать мобильную версию, чтобы я мог использовать функцию, которая отлично работает с id.

public Optional<device> findById(Long id) { return Optional.fromNullable(get(id));
}
</device>

Это функция, которую я использую для поиска по ID. Но я не могу использовать подобную функцию для мобильных устройств. Я получу исключение, сообщив мне, что функция исключает длинную, но получает строку. Поэтому я предполагаю, что я ошибался в мобильной рекламе. Но я не знаю, что я должен попробовать.

Добавить дополнительную информацию

public Optional<device> findByMobile(String mobile) { return Optional.fromNullable(get(mobile)); }
</device>

Это функция, которую я хочу работать. Но я получаю следующее исключение:

org.hibernate.TypeMismatchException: предоставлен идентификатор неправильного типа для класса com.mobiles.core.Device. Ожидаемый: класс java.lang.Long, получил класс java.lang.String

1 ответ

Хорошо, проблема в том, что метод get hibernate получает идентификатор объекта (см. Api), в вашем случае идентификатор длинный, то есть причина, по которой метод генерирует исключение. Таким образом, вы не можете использовать метод get с мобильным свойством

Вы можете использовать hql или критерии для загрузки объектов с использованием свойства mobile в качестве фильтра.

licensed under cc by-sa 3.0 with attribution.