EJB - mapowanie

0

Witam, mam sobie w bazie 2 tabele: Wydzial i Student. W tabeli Student jest 1 klucz obcy - id_wydzialu...Eclipse automatycznie zmapowal mi tak oto te kolumne:

//bi-directional many-to-one association to Wydzial
    @ManyToOne
	@JoinColumn(name="ID_WYDZIALU", nullable=false)
	private Wydzial wydzial;

public Wydzial getWydzial() {
		return this.wydzial;
	}

	public void setWydzial(Wydzial wydzial) {
		this.wydzial = wydzial;
	}

Teraz chce stworzyc zapytanie, w ktorym chce uzyskac id_wydzialu z tabeli Student - problem w tym ze nie moge napisac:
Query zapytanie=en.createQuery("Select s.idWydzialu from Student s Where s.idHasla="+idHasla);

poniewaz w klasie Student nie stworzylo sie mapowanie w stylu

@Id
	@Column(name="ID_WYDZIALU", unique=true, nullable=false, precision=22)
	private Long idWydzialu;

Jakie zapytanie powinienem stworzyc?

0

Adnotacja @Id nie odmosi sie do kluczy obcych, wiec Twojp rzyklad jest zupelnie zly.
Zakladam ze chcesz pobrac same id wydzial
Sprobuj:
select w.id from Student s join s.wydzial w where s.idHasla="+idHasla (zakladam ze wydzial ma pole id bedace id, jesli jest inne to odpowiednio zamien to pole w zapytaniu)

Poczytaj tez o parametryzowanych zpaytaniach - w powyzszym przykladzie (jak i Twoim) uzywasz sklejania stringow, ktore jest np podatne na sql-injection (tutaj chyba JPQL-injection, ale nadal idea ta sama). Moze Ci sie wydaje ze to niepotrzebne teraz, ale ucz sie poprawnie od poczatku. Tip: JPA obsluguje 2 typy parametrow, nazywane (:idHasla) i numerowane (jak JDBC, ?).
Pozdro.

0
:: napisał(a)

Adnotacja @Id nie odmosi sie do kluczy obcych, wiec Twojp rzyklad jest zupelnie zly.
Zakladam ze chcesz pobrac same id wydzial
Sprobuj:
select w.id from Student s join s.wydzial w where s.idHasla="+idHasla (zakladam ze wydzial ma pole id bedace id, jesli jest inne to odpowiednio zamien to pole w zapytaniu)

Poczytaj tez o parametryzowanych zpaytaniach - w powyzszym przykladzie (jak i Twoim) uzywasz sklejania stringow, ktore jest np podatne na sql-injection (tutaj chyba JPQL-injection, ale nadal idea ta sama). Moze Ci sie wydaje ze to niepotrzebne teraz, ale ucz sie poprawnie od poczatku. Tip: JPA obsluguje 2 typy parametrow, nazywane (:idHasla) i numerowane (jak JDBC, ?).
Pozdro.

Właśnie o to mi chodzi - o JOIN nie pomyślałem. Dzięki - spróbuje tak jak proponujesz, moze sie uda...

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