Jestem trochę zdezorientowany, jeśli chodzi o prognozy Hibernowanego i kryteria. Kiedy stosować prognozy i kiedy stosować kryteria?Kiedy używać projekcji Hibernacja?
Proszę, pomóż mi. Dzięki!
Jestem trochę zdezorientowany, jeśli chodzi o prognozy Hibernowanego i kryteria. Kiedy stosować prognozy i kiedy stosować kryteria?Kiedy używać projekcji Hibernacja?
Proszę, pomóż mi. Dzięki!
Nie wykluczają się wzajemnie, można używać obu jednocześnie. Prognozy są generalnie stosowane w kontekście niektórych kryteriów.
Mówiąc prościej, projekcje hibernacji są używane w celu wysłania zapytania tylko do podzbioru atrybutów encji lub grupy podmiotów, których zapytania dotyczą kryteriów. Można również użyć rzutowania, aby określić klauzule distinct
i funkcje agregujące, takie jak max
, sum
i tak dalej. To tak, jak odnosząc się do danych, które pobierasz , które. Podobnie jak modyfikowanie klauzuli select
w zapytaniu SQL.
Kryteria hibernacji służą do definiowania warunków, które dane muszą spełniać, aby je wybrać. To tak jak odwołanie się do , jak to jest, że dane, które pobierasz, to. Podobnie jak modyfikowanie klauzul zapytania SQL z zakresu from
i where
.
Zauważ, że ten jak i który nie jest absolutnie prawdą, to tylko orientacja na celu wspomóc OP. Możesz zmienić na przykład , które pobierają z createCriteria(String associationPath)
.
Sugeruję, aby spojrzeć na ten artykuł Hibernate: Criteria Queries in Depth
Projekcja jest interfejsem podane w pakiecie „org.hibernate.criterion” Projekcje jest klasa podane w tym samym opakowaniu, w rzeczywistości Projekcja jest interfejsem, Projections jest klasą i jest fabryką do wytwarzania obiektów projekcyjnych.
W klasie prognoz mamy wszystkie metody statyczne, a każda metoda tej klasy zwraca obiekt interfejsu rzutowania.
Jeśli chcemy dodać obiekt Projekcję kryteriów to musimy wezwać setProjection() metoda
Pamiętaj, że podczas dodawania obiektu projekcji z kryteriami, możliwe jest dodanie jednego obiektu na raz.Oznacza to, że jeśli dodamy drugi obiekt rzutowania, ten drugi nadpisze pierwszy (pierwszy nie będzie działać), więc w tym momencie możemy tylko jeden obiekt rzutowania do obiektu kryterium
Przy użyciu kryteriów, jeśli chcemy załadować częściowy obiekt z bazy danych, a następnie musimy utworzyć obiekt projekcja na nieruchomości, która ma być ładowany z bazy
Criteria crit = session.createCriteria(Products.class);
crit.setProjection(Projections.proparty("proName"));
List l=crit.list();
Iterator it=l.iterator();
while(it.hasNext())
{
String s = (String)it.next();
// ---- print -----
}
Jeśli dodamy kilka występów z kryteriami to ostatnia projekcja dodany zostanie uznanych wykonać zobaczyć ...
Criteria crit = session.createCriteria(Products.class);
Projection p1 = Projection.property("proName");
Projection p2 = Projection.property("price");
crit.setProjection(p1):
crit.setProjection(p2):
List l=crit.list();
Jak to odpowiada na pytanie? – 000
link do oryginalnego http://www.java4s.com/hibernate/working-with-hibernate-projections-in-criteria/ –
występy są wykorzystywane do wykonywania operacji zbiorczych i dostać jeden zapytanie kolumny, z ograniczeniami możemy uzyskać dostęp do ROW ale z występami możemy uzyskać dostęp do całej KOLUMNY
EX -
public static void main(String[] args) {
SessionFactory factory = new Configuration().configure().addAnnotatedClass(Student.class).buildSessionFactory();
Session session = factory.getCurrentSession();
try {
session.beginTransaction();
Criteria c = session.createCriteria(Student.class);
Projection p = Projections.property("lastName");
List<String> students = c.setProjection(p).list();
for(String s:students)
System.out.println(s);
session.getTransaction().commit();
session.close();
} finally {
factory.close();
}
}
W powyższym przykład użyłem wywołania projekcji, aby DODAĆ właściwość projekcji "nazwa" do kryteriów. Zwraca winchester winchester winchester winchester, który jest LastName COLUMN w tabeli.
Wyjście =
Hibernate: wybierz this_.last_name jak y0_ od studenta this_ winchester winchester winchester winchester
Uwaga - Możemy dodać tylko jeden występ, jeśli dodaj więcej niż 1 rzut, poprzedni zostanie zastąpiony. Jeśli chcesz dodać więcej niż jeden występ będzie nedd ProjectionList klasa
Orignal stole -
A warto liczyć() as -> powrotnej (Number) session.createCriteria ("Book") .setProjection (Projections.rowCount()). UniqueResult(); –