seam wyrzucanie własnych wyjątków przy zapytaniach do bazy

0

Witam wszystkich

Tworzę aktualnie pewną aplikację z wykorzystaniem framework SEAM.

Przykładowy kod:

@Stateful
@Name("mojaKlasa")
public MojaKlasaBEAN implements MojaKlasa{ 
@PersistenceContext
	private EntityManager entityManager;
public void insertUser(String imie)  throws ImieIstniejeException{
try{
   User user = new User(imie);
entityManager.persist(user);
} catch (Exception e) {
			log.info(e);
			throw new ImieIstniejeException("imie istnieje");
		}
   
}
}

niestety powyższe niepozwala mi wyrzucić własnego wyjątku w SEAM. Oczywiście próbowałem przechwytywać inne typy wyjątków zamiast obiektu Exception. Ale nadal to samo. Czy ktoś próbował wyrzucić własny wyjątek w SEAM??? Chodzi o wyrzucenie wyjątku przy okazji realizacji zapytania do bazy danych.

0

Od kiedy klasa moze rzucac wyjatki? Metoda moze, zmien miejsce "throws ImieIstniejeException" i powinno byc 0k.

0
:: napisał(a)

Od kiedy klasa moze rzucac wyjatki? Metoda moze, zmien miejsce "throws ImieIstniejeException" i powinno byc 0k.

Przepraszam, oczywiście że tak jak jest jak Pan napisał, jestem nieco zaspany i nie myślę już racjonalnie ;) Zmieniłem i kod wygląda teraz poprawnie, ale oczywiście nie działą. Powyższe to przykład klepany z palca. Oryginalnego kodu pokazać niestety nie mogę.

0

Co znaczy ze kod nie pozwala Ci wyrzucic wlasnego wyjatku? Jest blad kompilatora? Blad w runtime?

0
:: napisał(a)

Co znaczy ze kod nie pozwala Ci wyrzucic wlasnego wyjatku? Jest blad kompilatora? Blad w runtime?

Rzuca mi wyjątkiem DuplicatedEntry i tyle, ale nie wchodzi w ogóle do bloku catch.

Problem podobny do opisanego w wątku:

http://seamframework.org/Community/TransactionRollbackCatchingAConstraintViolationException

0

Wyjaku nie złapiesz w ten sposób bo commit transakcji jest w innym miejscu. Ogólnie zrob sobie em.flush() za tym persist i powinneles wtedy wejsc w catch'a

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1