Я по существу ищу аннотацию типа «@Ignore», с которой я могу остановить конкретное поле, которое сохраняется. Как это можно достичь?JPA самый быстрый способ игнорировать поле во время сохранения?
ответ
@Transient
соответствует вашим потребностям.
Чтобы игнорировать поле, отметьте его @Transient
, чтобы он не отображался в спящем режиме.
Источник: Hibernate Annotations.
Этот ответ приходит немного позже, но он завершает ответ.
Для того, чтобы избежать поле от объекта, чтобы быть сохранены в БД, можно использовать один из двух механизмов:
@Transient - аннотации JPA маркировки поля не persistable
transient ключевое слово в java. Остерегайтесь - используя это ключевое слово, предотвратит использование поля с любым механизмом сериализации из java. Итак, если поле должно быть сериализовано, вам лучше использовать только аннотацию @Transient.
как насчет того, что я просто хочу игнорировать упорство на методе get ?. Например: myjparepository.save() wil сохранит модель как обычно, а myjparepository.find (id) будет игнорировать поле, которое я хочу? – xtiger
нет идеи если возможно. Извините –
Для завершения вышеуказанных ответов, я имел дело с помощью файла сопоставления XML, где ни @Transient
, ни transient
работал ... я должен был поставить переходную информацию в файле XML:
<attributes>
(...)
<transient name="field" />
</attributes>
К игнорировать поле, аннотировать его @Transient
, чтобы он не отображался в спящем режиме.
, но затем jackson не будет сериализовать поле при конвертации в JSON.
Если вам нужно смешивать JPA с JSON (опустить на JPA, но по-прежнему включают в Джексон) использовать @JsonInclude
:
@JsonInclude()
@Transient
private String token;
Вы также можете использовать JsonInclude.Include.NON_NULL и скрыть поля в формате JSON при десериализации при token == null
:
@JsonInclude(JsonInclude.Include.NON_NULL)
@Transient
private String token;
Я запускаю JAX-RS 2.0.1/Jersey 2.25.1/Jackson 2.8.7 и с этим стекем '@ JsonInclude' не требуется: поля' @ Transient' по-прежнему включены в JSON. (Вы все еще получили мой голос: сама техника может быть очень полезной в других обстоятельствах). – DKroot
Ни один из вышеперечисленных ответов не работал для меня, используя Hibernate 5.2.10, Jersey 2.25.1 и Jackson 2.8.9. Я наконец нашел ответ (вроде, они ссылаются на hibernate4module, но он работает и на 5) here. Ни одна из аннотаций Json не работала с @Transient
. По-видимому, Jackson2 «умный», чтобы любезно игнорировать вещи, отмеченные @Transient
, если вы явно не рассказываете об этом. Ключ в том, чтобы добавить модуль hibernate5 (который я использовал, чтобы иметь дело с другими аннотациями Hibernate) и отключить функцию USE_TRANSIENT_ANNOTATION
в моем Джерси Применение:
ObjectMapper jacksonObjectMapper = new ObjectMapper();
Hibernate5Module jacksonHibernateModule = new Hibernate5Module();
jacksonHibernateModule.disable(Hibernate5Module.Feature.USE_TRANSIENT_ANNOTATION);
jacksonObjectMapper.registerModule(jacksonHibernateModule);
Вот зависимость для Hibernate5Module:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate5</artifactId>
<version>2.8.9</version>
</dependency>
После попытки любой другой метод упомянул выше и другие '@ JsonProperty' ' @ JsonInclude' '@JsonSerialize + @ JsonDeserialize'' mapper.configure (MapperFeature.PROPAGATE_TRANSIENT_MARKER, ложь)); ' это решение, наконец, работал. Благодаря! – Aceonline
- 1. Самый быстрый способ «игнорировать» строку
- 2. Самый быстрый способ сохранения изменений
- 3. Самый быстрый способ изменить тему во время запуска приложения
- 4. Самый быстрый способ найти время разности
- 5. JPA: Способ сохранения данных только на время
- 6. Самый быстрый способ импорта?
- 7. Самый быстрый способ Алгоритм
- 8. Самый быстрый способ взять
- 9. Игнорировать поле во время десериализации от JSON
- 10. Игнорировать поле во время выполнения в Objectify
- 11. Самый быстрый способ сделать FFT
- 12. Самый быстрый способ использования CSS
- 13. Самый быстрый способ вычисления свертки
- 14. Самый быстрый способ клонирования GregorianCalendar?
- 15. Самый быстрый способ чтения файла
- 16. OpenGL - выбор (самый быстрый способ)
- 17. Самый быстрый способ подсчета ALAssetLibrary?
- 18. Самый быстрый способ сравнить AnsiString
- 19. Самый быстрый способ к нулю
- 20. Самый быстрый способ поиска строки
- 21. Самый быстрый способ сохранить матрицы Matlab
- 22. Самый быстрый способ леммизировать предложения
- 23. Самый быстрый/самый простой способ обновить datagridview?
- 24. EF: Лучший/Самый быстрый способ обновить поле по идентификатору
- 25. Самый быстрый способ унифицировать список в Python
- 26. Какой самый быстрый способ сравнить дату и время в пандах?
- 27. Самый быстрый способ установить флаг переноса
- 28. Самый быстрый способ сравнить многоугольники
- 29. Самый быстрый способ объединения всех
- 30. Самый быстрый способ сохранить UIImage
Но тогда Джексон не будет сериализовать поле при конвертации в JSON ... как решить? – MobileMon
, который зависит от вашего приложения.если вы комментируете свой класс сущностей - это применимо повсюду; но если вы анонтируете dao, который использует сущность - это еще одна история. вкратце: используйте DAO, когда у вас несколько хранилищ – Sarief
@MobileMon проверить мой ответ ниже о jackson – user3871754