Спящий материализовать вид, встроенный двумя сущностями? - PullRequest
0 голосов
/ 07 августа 2011

У меня есть вопрос о Hibernate.

У меня есть Entity Panier:

@ Entity
public class Panier implements Serializable
{
     @ Id @ GeneratedValue
     private long idPanier;
     @ OneToOne
     private Client client;
     @ OneToMany
     private List items = new ArrayList <LignePanier> <LignePanier> ();
     private int nbArticle;
     private double subtotal;
     private double vat;
     private double totalTtc;
     ...
}

Поэтому я создаю таблицу, которая содержит мои данные, связанные с моими строками Panier (Артикул + количество).

Теперь я хотел бы иметь механизм для хранения счета-фактуры, созданного из панели.Но это сделано из статического снимка, потому что счет не обновляется сам, если цена предмета изменилась.

Так что я хотел бы знать, какую стратегию применять в спящем режиме.

Я создаю счет-фактуру, но хочу, чтобы он хранился в одной таблице без ссылки на внешний ключ.

@ Entity
@ Immutable
public class Invoice implements Serializable
{
     @ Id @ GeneratedValue
     private long idFacture;
     private Date OrderDate;
     private String moyenPayement;
     @ Embedded
     private Panier panier;
     ...
}

Я хотел использовать встроенную аннотацию, которая, кажется, выполняет то, что я хочу,Но проблема в том, что это применимо только к аннотациям объекта @Embeddable, а не к @Entity.Они не сосуществуют вместе.

Итак, как мы можем / должны это сделать?

Я использую PostgreSQL в качестве базы данных.

Заранее благодарю за совет.

Пирло Николас

1 Ответ

1 голос
/ 07 августа 2011

Если вы используете entityManager.merge () для сохранения или обновления Panier, то не только ваша сущность будет обновляться или вставляться, но и любая сущность, которая в ней содержится. Просто убедитесь, что у каждого из встроенных объектов есть идентификаторы. Потерять аннотацию @Embedded.

Если встраиваемые объекты не имеют идентификаторов, то будут созданы новые.

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