Может ли класс сущности JPA Spring содержать поля, не относящиеся к БД, которых нет в таблице БД - PullRequest
1 голос
/ 07 ноября 2019

Я использую Spring JPA и Spring Data Rest с SpringBoot. У меня есть таблица БД с именем пользователя и сущность для этой таблицы. У меня нет контроллера для этого приложения.

@Entity
@Table(name = "USER")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "USER_ID")
    private Integer userid;

    @Basic(optional = false)
    @Column(name = "USER_NAME")
    private String username;
} 

А теперь мне нужно добавить еще одно поле, которое не является столбцом в таблице USER. Он будет использоваться каким-либо инструментом мониторинга для целей отслеживания.

@Entity
@Table(name = "USER")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "USER_ID")
    private Integer userid;

    @Basic(optional = false)
    @Column(name = "USER_NAME")
    private String username;

    private String tracer;  // this field is not in DB
} 

Я получаю jdbc.spi.SqlExceptionHelper - Недопустимое имя столбца "tracer" после добавления этого поля, что имеет смысл, поскольку этот класс аннотирован как сущность. У меня такой вопрос: есть ли способ добавить не-DB поле в сущности класса? Я думаю, нет, но хотелось бы знать, если у кого-то есть решение. Спасибо.

1 Ответ

4 голосов
/ 07 ноября 2019

Да, просто добавьте аннотацию @Transient к вашему полю.

Вы можете узнать больше из документации API:

https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/Transient.html

А здесь (раздел37.1.2.1):

https://docs.oracle.com/javaee/7/tutorial/persistence-intro001.htm#BNBQA

Надеюсь, это поможет.

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