Сохранение объекта в сущности без сохранения его в JPA - PullRequest
3 голосов
/ 09 мая 2011

Я делаю приложение в игровой среде, в котором мне нужно сохранить тот же экземпляр объекта, не являющегося объектом, в объекте 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, сохраняя столбец объекта скрытым в таблице сущностей?

1 Ответ

7 голосов
/ 09 мая 2011

Извлечение аннотации @ 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;
    }
}
...