Сохранение объекта в сущности без сохранения его в 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 3

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;
    }
}