Obecnie używam Eclipselink, ale wiem, że obecnie większość implementacji JPA jest dość wystandaryzowana. Czy istnieje natywny sposób mapowania jednostki JPA do widoku? Nie chcę wstawiać/aktualizować, ale pytanie brzmi jak obsłużyć adnotację @Id. Każda jednostka w świecie WZP musi mieć pole ID, ale wiele utworzonych widoków nie jest zgodnych z tym. Czy istnieje natywne wsparcie dla tego w JPA, czy też muszę użyć hacków, aby to działało? Dużo przeszukałem i znalazłem bardzo mało informacji na ten temat.Czy JPA obsługuje mapowanie do widoków sql?
Odpowiedz
Podczas korzystania z @Id
adnotacji z dziedzin bezpośrednio obsługiwanych typów nie jest jedynym sposobem, aby określić tożsamość jednostki (patrz @IdClass
z wieloma @Id
adnotacji lub @EmbeddedId
z @Embedded
), specyfikacja JPA wymaga klucza podstawowego dla każdego podmiotu.
Powiedziałeś, że nie potrzebujesz jednostek do używania JPA z widokami bazy danych. Ponieważ mapowanie do widoku nie różni się od mapowania do tabeli z perspektywy SQL, nadal można używać natywnych zapytań (createNativeQuery
na EntityManager
) w celu pobrania wartości skalarnych.
Sam się nad tym zastanawiałem. Znalazłem włamanie, że nie jestem w 100% pewnym dziełem, ale wygląda obiecująco.
W moim przypadku mam kolumnę FK w widoku, która może skutecznie funkcjonować jako PK - dowolna instancja tego obiektu obcego może wystąpić tylko raz w widoku. Zdefiniowałem dwa obiekty z tego jednego pola: jeden jest oznaczony ID i reprezentuje surową wartość pola, a drugi jest oznaczony jako tylko do odczytu i reprezentuje obiekt, do którego się odwołuje.
@Id
@Column(name = "foreignid", unique = true, nullable = false)
public Long getForeignId() {
...
@OneToOne
@JoinColumn(name = "foreignid", insertable=false, updatable=false)
public ForeignObject getForeignObject() {
...
Tak jak mówiłem, nie jestem w 100% pewien na ten jeden (a ja po prostu usunąć tę odpowiedź, jeśli okaże się nie do pracy), ale dostałem kod przeszłość określonego punktu zderzenia.
Nie wiem, czy dotyczy to Twojej konkretnej sytuacji. Jest wielka szansa, że po 11 miesiącach przestanie ci to zależeć. :-) Co do cholery, ta odznaka "Nekromanty" nie tylko zarabia sama ...
Moim zdaniem mam "unikalny" identyfikator, więc zamapowałem go jako identyfikator podmiotu. To działa bardzo dobrze:
@Entity
@Table(name="table")
@NamedQuery(name="Table.findAll", query="SELECT n FROM Table n")
public class Table implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="column_a")
private int columnA;
- 1. Mapowanie właściwości z JPA
- 2. Mapowanie matrycy JPA
- 3. Czy AlamofireObjectMapper/ObjectMapper obsługuje mapowanie typu struktury
- 4. Mapowanie XML-to-SQL
- 5. JPA nie obsługuje dobrze interfejsów ... aplikacji?
- 6. jpa mapowanie typu java na typ bazy danych
- 7. Mapowanie JPA dla listy lub zestawu <String>
- 8. mapowanie wyników kwerendy Hibernuj do niestandardowej klasy?
- 9. Hibernate i JPA - mapowanie błędów Klasa osadzona udostępniona przez interfejs
- 10. Tworzenie widoków tylko do odczytu w serwerze Sql
- 11. Mapowanie jednostek JPA, które jest powiązane z dwoma odwzorowaniami jednostek:
- 12. Mapowanie JPA: "Wyjątek QuerySyntaxException: foobar nie jest mapowany ..."
- 13. Czy możemy przypisać niestandardowe podpowiedzi do zapytań do JPA NamedQueries
- 14. Kwerenda JPA - iniekcja sql w parametrach pozycyjnych jpa natywne zapytanie
- 15. Czy usługa SQL Azure obsługuje typ FILESTREAM o typie danych
- 16. Czy usługa Azure SQL Database obsługuje zatwierdzanie dwufazowe (2PC)?
- 17. SQL: Aktualizacja tabeli poprzez mapowanie dwie kolumny do siebie
- 18. Czy Postgresql plpgsql/sql obsługuje zwarcie w klauzuli where?
- 19. Jaki jest cel widoków w SQL?
- 20. @ElementCollection @CollectionTable w jeden do wielu mapowanie
- 21. Czy EF 6 obsługuje typy SQL Server 2014?
- 22. Czy rekord aktywny Active Rails obsługuje zapytania agregacyjne SQL?
- 23. Migracja z JPA z powrotem do prostego SQL
- 24. Mapowanie SQL widok w kodzie pierwszego podejścia
- 25. Czy serwer SQL obsługuje odległość pomiaru przez trasy?
- 26. Czy myBatis implementuje JPA?
- 27. Metoda X nie obsługuje translacji do SQL - booleans i datetime
- 28. Czy Mono obsługuje XAML?
- 29. Czy możliwe jest mapowanie pojedynczego obiektu z wieloma tabelami za pomocą JPA?
- 30. Czy Jenkins obsługuje XUnit.Net?
Widoki funkcje jak normalnych tabel Jednak jeśli poglądy nie pasuje dobrze z mapowania JPA ORM można zamiast skorzystać z procedury przechowywanej, aby powrócić kursorem niestandardową utworzoną z widoku (ów). Można zmapować procedury składowane w EclipseLink za pomocą adnotacji @NamedStoredProcedureQuery. Aby uzyskać więcej informacji na temat tego Google dla "rozszerzeń EclipseLink". –