Сохранение объекта в сущности без сохранения его в JPA
Я делаю приложение в Play framework, в котором мне нужно сохранить один и тот же экземпляр объекта не-сущности в сущность JPA, не сохраняя его в базе данных, я хочу знать, возможно ли это сделать или не использовать аннотации. Пример кода того, что я ищу:
public class anEntity extends Model {
@ManyToOne
public User user;
@ManyToOne
public Question question;
//Encrypted candidate name for the answer
@Column(columnDefinition = "text")
public BigInteger candidateName;
//I want that field not to be inserted into the database
TestObject p= new TestObject();
Я попробовал @ Embedded аннотацию, но она должна была встраивать поля объектов в таблицу сущностей. Можно ли вообще использовать @Embedded, сохраняя столбец object скрытым в сущности стол?
1 ответ:
Проверьте аннотацию @Transient:
" эта аннотация указывает, что свойство или поле не является постоянным. Он используется для аннотирования свойства или поля класса сущностей, отображаемого суперкласса или встраиваемого класса."
Чтобы убедиться, что вы всегда получаете один и тот же объект, вы можете реализовать шаблонSingleton , поэтому ваши сущности могут использовать его методgetInstance()
для задания переходного объекта:Так что это должно сделать трюк:
public class anEntity extends Model { @Transient private TransientSingleton t; public anEntity(){ // JPA calls this so you can use the constructor to set the transient instance. super(); t=TransientSingleton.getInstance(); } public class TransientSingleton { // simple unsecure singleton from wikipedia private static final TransientSingleton INSTANCE = new TransientSingleton(); private TransientSingleton() { [...do stuff..] } public static TransientSingleton getInstance() { return INSTANCE; } }