#java #jpa #hibernate

Pomocy, juz powoli głupieje.

Mam sobie tabelke, która jest struktura drzewiastą

Employee {
-id: long
-name: string
-manager: Employee
}

teraz pytanie, jak dla każdego poziomu pobrać wszystkie dzieci, np.
-prezes
--dyrektor1
---kierownik2
----pracownik1
----pracownik2
---kierownik2
----pracownik3
itd,

musze pobać wszystkich pracowników dla dyrektora1 (w tym i kierownikow bo to tez pracownicy), sprawa jest prosta gdy mam stałą głębokość takiej struktury, moge sobie wtedy zbudować odpowiednie criteria, w zalezności
Witam,

Mam prawię gotową aplikację Web wykonaną w Spring MVC i musze podpiąć pod nią baze danych.
Jestem początkujący i zza bardzo się na tym nie znam a nie mam za duzo czasu, dlatego pytam czy mogli byscie polecic jakies dobre poradniki ? tutoriale ?
Jaką bazę będzie łatwiej zaimplementowac ? jpa ? hibernate ?
Najbardziej odpowiadało by mi coś podobnego do EntityFramework z C#
#hibernate #jpa #springmvc #java
Mircy dlaczego taki kod:

Session session = transactionManager.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
Item item = new Item();
session.persist(item);
item.setName("nowyItem");
Bid bid = new Bid();
bid.setAmount(100);
item.getBids().add(bid);
transaction.commit();

Zapisuje mi sam item bez bid'a , mimo że zatwierdzam transakcję dopiero na końcu? jeśli przerzucę session.persist nad transaction.commit, to oba przedmioty są zapisywane ( ͡° ʖ̯ ͡°) Coś nie tak z dirty checking?
@interface może Ty coś wiesz ( ͡
Mirki ratujcie!

Uczę się tego gówna i mnie krew zalewa... #jpa #hibernate?

Mam klasę abstrakcyjna w #java o tako o :

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Flight {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private int id;

I klasy dziedziczące (paręnaście, które różnią się tylko nazwa :P jak jest jakiś lepszy sposób pisać)

@Entity
public class Flight1 extends Flight {

public Flight1() {
super();
}

Działa, ale opornie.
Problemy
1. Skacze mi
Mam problem z #spring #jpa. Mam mapowanie /screenings które zwraca id seansu, film, salę kinową i datę. Problem w tym, że chciałbym wyłuskać tylko kilka potrzebnych pól (nazwa filmu, nazwa sali) tymczasem dostaję całą encję movie i auditorium. Próbowałem fetch = FetchType.Lazy ale spring chyba to omija i dalej ładuje całe obiekty. Znalazłem w internecie @JsonIgnore ale nie zawsze chcę pomijać niektóre atrybuty. Jak można elegancko odnieść się do kilku
@kornfan: do takich rzeczy stosuje się obiekty DTO, a nie zwraca całe encje bazodanowe. W obiektach DTO zawarte są tylko te informacje, które chcemy zwrócić użytkownikowi. Można tam wsadzić dane z różnych encji i taki gotowy obiekt zwrócić w postaci JSON'a. Poczytaj też o transformacjach (konwersji) obiektów encji na DTO (data transfer object).
http://www.baeldung.com/entity-to-and-from-dto-for-a-java-spring-application
Nic od siebie nie dodam, ale polecam wszystkim przeglądającym w/w tagi na poświęcenie czasu i obejrzenie materiału od Pana Jakuba. Ogromna wiedza, przykłady z życia wzięte, język polski, must see.
@Simos: "technologię tagów" ? jest takie coś jak "java ee 7 sdk", tam jest wiele przykładów. W katalogu docs\javaee-tutorial\examples\case-studies są też 3 pełne, przykładowe aplikacje w jee7
#programowanie #java #spring #jpa #hibernate #mysql

Mirki mam problem. Jest klasa:

class Parent {
@OneToMany(mappedBy = "parentId", fetch = FetchType.EAGER)
Set children;
}

i

class Child {
int parentId;
}

Chcę usunąć sobie Parent z bazy, ale bez usuwania Child. Jednak dostaję exception:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails

Jak zrobić by hibernate nie tworzył constraint przy @OneToMany?
@grizzly_joe: Ale jak masz już pobrany jeden pokój z twojego JpaRepository, to z pokoju nie możesz wyciągnąć informacji o domie, do którego należy? (zakładam że jak dom ma listę pokoi, to pokój ma jakiś dom)
#java #spring #jpa #programowanie
mam sobie klasę X, która jest jeden do wielu z Y
(X zawiera Set, Y zawiera X)

i teraz tak: mam kontroler który zwraca jsona X
i to automatycznie mi dołącza Y
i teraz pytanie: jak zrobić, żeby mi nie dołączało Y, albo dołączało w zależności od parametru zapytania

ps. wiem, że JsonIgnore lub odpowiedni JsonView mi tego nie dołączy i nie będzie brało z bazy przy lazy
#programowanie #hibernate #jpa #java

Mam dwa obiekty relacja OneToOne:

@Entity
@Table(name = "STOCK")
public class Stock implements Serializable {
@OneToOne(fetch = FetchType.LAZY, mappedBy = "stock", cascade = CascadeType.ALL)
private StockIndicators stockIndicators;
}


@Entity
@Table(name = "STOCK_INDICATORS")
public class StockIndicators {
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="stock_id", foreignKey = @ForeignKey(name="fk_stock_id"))
private Stock stock;
}

Korzystając ze spring data mam taką metodę do pobrania stock z indicators:

@Query("from Stock st
Mam pytanie dotyczące springa i jego repozytoriów JPA.
Po wykonaniu metody save() na repozytorium nie idzie INSERT do bazy. Tak samo jest z delete() i innymi zapytaniami modyfikującymi bazę.
Co ciekawe aplikacja działa bez problemu na tomcacie na Windowsie korzystając z bazy zainstalowanej na linuxie, natomiast uruchamiając ją na Linuxowym tomcacie i podłączając do tej samej bazy nie działa.
Błędów nie ma, jedynie przy loggingu na poziomie DEBUG można zobaczyć ze hibernate
Od niedawna zaczynam przygodę z hibernate - pracuję na instniejącej już bazie danych i po raz pierwszy poważnie trafiłem głową w ścianę. Do rzeczy - posiadam dwie encje - OrderHeader oraz OrderLine. OrderHeader posiada listę OrderLine. Z selectami nie problemów - wszystko ładnie się zwraca. Inserty także śmigają - tutaj fragment OrderDAO:

Boolean addNewOrder(OrderHeader orderHeader) {
Session session = this.sessionFactory.openSession();
try {
session.save(orderHeader);
return true;
} catch (HibernateException e) {
Dzień dobry.
Mam pytanie odnośnie #jpa #hibernate #spring i #spring-data
Domyślnie ładowanie relacji jest ustawione na LAZY, co zresztą ma sens. Ja zawsze to zlewałem, ustawiłem sobie FetchType.EAGER i do przodu. No ale generalnie jest to rozwiązanie skrajnie złe, na zasadzie "działa, bo działa".
Teraz chcę to zrobić poprawnie i nie bardzo wiem jak to rozwiązać.

Przy leniwym ładowaniu jak zwróci mi obiekt to zamyka sesję i nara. Teraz pytanie