Mam tabelę z 11 kolumnami, ale muszę pobrać tylko 2 z nich w mojej aplikacji, używam kombinacji wiosna/hibernacja/DAO. Na razie mam klasę domen, która zawiera wszystkie 11 pól i plik mapujący, który mapuje wszystkie 11 kolumn w tabeli. Jak korzystać, aby uzyskać tylko 2 z nich nie wszystkie?Uzyskując mniej kolumn z hibernacją
Odpowiedz
Albo:
wykorzystują projekcje - Pro: nic dodać - Con: Nie typesafe (wynik jest
List
wierszy, z których każdy wiersz jestObject[])
:select f.foo, f.bar from FatEntity f
Wykorzystanie wyrażenie konstruktora w klauzuli SELECT (określona klasa nie musi być jednostką lub mapowana do bazy danych) - Pro: typesafe solution - Con: Więcej klas, chyba że ponownie użyjesz
FatEntity
jako właściciela, w którym to przypadku wiele pól będzienull
:select new com.acme.FatEntityDetails(f.id, f.foo, f.bar) from FatEntity f
Zauważ, że jeśli nazwa klasy jednostka jest określona w klauzuli
SELECT NEW
, powstałe przypadki podmiotu są w nowego stanie (brak trwałe tożsamości).Użyj innej jednostki zamapowanej w tej samej tabeli tylko z wymaganymi polami - Pro: Jest to realna jednostka, którą możesz modyfikować i aktualizować - Con: Więcej klas.
from LightEntity
Główne różnice między # 2 i # 3 są:
2 nie wymaga od posiadacza być podmiot w ogóle.
- posiadaczem w # 2 może być podmiot odwzorowany na innej tabeli.
- jeśli # 2 zwróci obiekty, są one w nowym stanie (może to być problem lub nie).
Spróbuj:
SELECT myEntity.one, myEntity.two FROM MyEntity myEntity
Można nawet zrobić:
SELECT new MyEntityDescription(myEntity.one, myEntity.two) FROM MyEntity myEntity
aby uzyskać listę opisów jednostki.
Jeśli nie potrzebujesz więcej niż te 2 kolumny tabeli, możesz zmienić mapowanie hibernacji, aby odwzorować tylko te 2 potrzebne kolumny na klasę encji. Mapuj tylko te kolumny tabeli, do których chcesz uzyskać dostęp w swojej aplikacji. Należy pamiętać, że ograniczenia bazy danych w kolumnach "ignorowanych" mogą zostać naruszone, tak jak nie są zerowe ograniczenia, klucze obce lub unikalne ograniczenia.
co z klasą domeny, czy muszę mieć również 2 pola? –
- 1. Wstawianie wsadowe z hibernacją i sprężyną
- 2. Doctrine2 Paginator uzyskując pełne wyniki
- 3. HibernateInterceptor ze sprężyną 3.1 i hibernacją 4.01
- 4. Google umieszcza interfejs API, uzyskując adresy użytkowników
- 5. „-Weverything” uzyskując „Porównując pływający punkt z == lub = jest niebezpieczne!”
- 6. Mniej css z opcjonalnymi parametrami
- 7. jak leniwe ładowanie kolekcji przy użyciu spring-data-jpa, z hibernacją, z aplikacji konsolowej
- 8. Test równoważności z tylko mniej niż operatora?
- 9. Jak używać mniej z Angular 2?
- 10. wyjście rury z polecenia interaktywnej mniej
- 11. Twitter Bootstrap MNIEJ z Node.js i Express
- 12. Mniej CSS "alias" z bootstrap + font-niesamowite
- 13. Mniej pobiera dane z klawiatury ze stderr?
- 14. Okrąg widoku z mniej niż 4 widokami
- 15. Java, nashorn uzyskując dostęp do innego pliku js
- 16. MNIEJ Client dla Windows
- 17. Mniej pierwsze dziecko
- 18. MNIEJ: Nierozpoznany wejście
- 19. rur mniej Emacs
- 20. Zastąp mniej mixin
- 21. Jak programować monadycznie w Javie8, uzyskując porównywalną wydajność?
- 22. elasticsearch uzyskując zbyt wiele wyników, potrzebuję filtrowania zapytań pomocowych
- 23. Średnia z wielu kolumn
- 24. Junit: mniej niż asercja?
- 25. Netbeans 7.2 + Mniej wtyczki
- 26. Filtrowanie wierszy na podstawie liczby kolumn z AWK
- 27. aktualizowanie wartości boolowskiej w danych źródłowych jpa przy użyciu @Query z hibernacją
- 28. Pandy wartości kolumn do kolumn?
- 29. rozszerzenie mniej pliku w windows
- 30. Wybieranie kolumn z określonymi nazwami kolumn w PostgreSQL
@Pascal Thivent nie mogę po prostu zostawić 2 pola w mojej klasie domeny i pliku mapowania? –
@Gandalf Cóż, myślałem, że ktoś używa innych pól. Jeśli to nie jest prawda, możesz zmienić swój obecny byt. –
Dziękuję za wiele rozwiązań i wyjaśnień, w jaki sposób wymyślić tak? expirience? czytanie książek, szkolenie? Przyjmuję twoją odpowiedź.gdybyś mógł wskazać mi właściwy kierunek, byłoby wspaniale, na przykład: strony internetowe, przykłady, książki. –