Commit fd0afffc by Patryk Czarnik

Poprawki w przykładach Hibernate

parent 9ab65d84
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/src/main/java/hr/gotowe/Odczyt14_Native.java" dialect="GenericSQL" />
<file url="PROJECT" dialect="PostgreSQL" />
</component>
</project>
\ No newline at end of file
......@@ -25,6 +25,7 @@ public class Criteria3 {
CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);
Root<Employee> root = cq.from(Employee.class);
cq.select(root);
// e.salary >= minSalary AND e.department.location.city = szukaneMiasto
cq.where(cb.and(cb.ge(root.get("salary"), minSalary),
cb.equal(root.get("department").get("location").get("city"), szukaneMiasto)));
cq.orderBy(cb.desc(root.get("salary")));
......
......@@ -24,7 +24,7 @@ public class Odczyt08_Tablica {
}
System.out.println("\nSprawdzę typy kolumn:");
Object[] row = (Object[])rows.get(0);
Object[] row = rows.get(0);
System.out.println(row[0].getClass().getSimpleName() + " " + row[2].getClass().getSimpleName() + " " + row[3].getClass().getSimpleName());
} finally {
if(em != null) em.close();
......
......@@ -18,7 +18,8 @@ public class Odczyt11_Join {
em = emf.createEntityManager();
System.out.println("Odczyt...");
TypedQuery<Object[]> query = em.createQuery("SELECT e.firstName, e.lastName, d.departmentName, l.city"
+ " FROM Employee e LEFT JOIN e.department d LEFT JOIN d.location l", Object[].class);
+ " FROM Employee e LEFT JOIN e.department d LEFT JOIN d.location l"
+ " ORDER BY l.city, e.lastName, e.firstName", Object[].class);
List<Object[]> emps = query.getResultList();
for (Object[] emp : emps) {
System.out.println(Arrays.toString(emp));
......
......@@ -24,8 +24,7 @@ public class Odczyt13_Native {
List<?> rows = query.getResultList();
for (Object row : rows) {
// na wszelki wypadek sprawdzam, ale widzę, że Object[] działa
if(row instanceof Object[]) {
Object[] cols = (Object[]) row;
if(row instanceof Object[] cols) {
System.out.println(cols[0] + " pracuje jako " + cols[1] + " i zarabia " + cols[2]);
}
}
......
......@@ -29,11 +29,11 @@ public class OdczytajManagerow {
continue;
}
while(emp != null) {
System.out.println(" " + emp.getId() + " " + emp.getFirstName() + " " + emp.getLastName()
+ "(" + emp.getJob().getJobTitle() + ")" + " $" + emp.getSalary());
while(emp.getManager() != null) {
emp = em.find(Employee.class, emp.getManager());
System.out.println("Managerem jest:");
System.out.println(" " + emp.getId() + " " + emp.getFirstName() + " " + emp.getLastName()
+ " (" + emp.getJob().getJobTitle() + ") $" + emp.getSalary());
}
}
} finally {
......
......@@ -22,6 +22,7 @@ public class P9_DetachMerge {
System.out.println("Zmieniam pole");
lokalizacja.setCity("WENECJA");
System.out.println(lokalizacja);
// gdybym teraz zrobił commit, to ta zmiana nie zapisze się w bazie
System.out.println("Ponowny find");
Location lokalizacjaFind = em.find(Location.class, 1100);
......@@ -29,10 +30,18 @@ public class P9_DetachMerge {
System.out.println("merge");
Location lokalizacjaMerge = em.merge(lokalizacja);
// obiekt lokalizacja nie zmienił położenia w pamięci i jest oddzielnym obiektem.
// uwaga! dalsze zmiany na nim nie wpływają na obiekty JPA
lokalizacja.setStreetAddress("ULICA WIELKA NOWA");
// To wynik operacji merge jest tym obiekty należącym do puli; tutaj jest on równy lokalizacjaFind
System.out.println("l : " + lokalizacja);
System.out.println("lf: " + lokalizacjaFind);
System.out.println("lm: " + lokalizacjaMerge);
System.out.println(lokalizacja == lokalizacjaFind); // false
System.out.println(lokalizacjaMerge == lokalizacjaFind); // true
em.getTransaction().rollback();
System.out.println("Zrolowano.");
}
......
......@@ -27,6 +27,8 @@ public class P9_Merge {
System.out.println(lokalizacjaFind);
System.out.println("merge");
// gdyby nie było id - zrobiłby inserta
// jeśli jest id - to robi updejta
Location lokalizacjaMerge = em.merge(loc);
System.out.println("l : " + loc);
System.out.println("lf: " + lokalizacjaFind);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment