Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: Spring + hibernate - problem z aplikacją

Mam pewien problem.

Gdy startuje mi serwer otrzymuję w logach:
19:25:47,355 ERROR [pool-2-thread-1][MainServlet:347] org.postgresql.util.PSQLException: BŁĄD: relacja "company" nie istnieje
Pozycja: 23
org.postgresql.util.PSQLException: BŁĄD: relacja "company" nie istnieje
Pozycja: 23
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)


W swojej aplikacji mam ustawione, aby hibernate tworzył w bazę w postgresql (drop-create)

Jak próbuję zbudować aplikację to za pierwszym razem otrzymuję:
20:34:29,768 INFO  [DispatcherPortlet:282] FrameworkPortlet 'Model': initialization completed in 9458 ms
20:34:29,768 INFO [DispatcherPortlet:119] Portlet 'Model' configured successfully
20:34:29,794 ERROR [pool-2-thread-19][HotDeployImpl:191] com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for Model-portlet
com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for Model-portlet
.....
Caused by: com.liferay.portal.NoSuchRoleException: No Role exists with the key {companyId=0, name=Administrator}
at com.liferay.portal.service.persistence.RolePersistenceImpl.findByC_N(RolePersistenceImpl.java:2879)


Jednak tworzy w bazie wszystkie tabele.

Company:
@Entity(name = "company")
@Table(name = "COMPANY")
public class Company {

@Id
@Column(name="ROW_ID")
private String rowId;

@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn(name = "ROW_ID")
private Party party;


Party:
@Entity(name="party")
@Table(name="PARTY")
public class Party {

@OneToOne(fetch = FetchType.LAZY, mappedBy = "party")
private Company company;


Gdy próbuję drugi raz zbudować aplikację to otrzymuję błąd:
2012-09-18 20:44:33 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already. Could not load org.springframework.orm.jpa.EntityManagerFactoryUtils. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1597)
...

20:44:33,559 ERROR [pool-2-thread-2][HotDeployImpl:191] com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for Model-portlet
com.liferay.portal.kernel.deploy.hot.HotDeployException: Error registering portlets for Model-portlet


I tak na zmianę, raz dział w części a raz w ogóle?
Co w ogóle może być przyczyną?
Jarosław Szczepankiewicz

Jarosław Szczepankiewicz Lead Technical
Consultant

Temat: Spring + hibernate - problem z aplikacją

Przydałoby się się dokładnie dowiedzieć co jest wykonywane w postgresie bo to może dać najszybciej wskazówkę co jest nie tak. Zapuść logowanie postgresa:
czyli z tego co pamiętam (postgresql.conf)

log_statement = 'all'
log_min_duration_statement = 0

i dokladnie sprawdz jaka komenda wykonywana jest dla błędu, na tej podstawie będziesz mógł stwierdzić gdzie tkwi błąd na poziomie SQL. Dodatkowo porównać czym się różni sekwencja wywołania poleceń SQL gdy jest według Ciebie "nie ma błędu" i gdy "jest błąd". Dodatkowo (trochę mocno paranoicznie ale nie zaszkodzi) wyłącz lub upewnij się że masz wyłączony cache L2. Choć hibernate ma domyślnie wyłączony to jednak mogłeś skopiować skadś fragment konfiguracji i niechcący włączyć L2.

Następna dyskusja:

Hibernate - Problem z utwor...




Wyślij zaproszenie do