Zwischentabelle PK

Hallo zusammen,

ich versuche immer noch mit der many to many beziehung klar zu kommen.
Ich hab diese Klasse


@Entity
@Table(name = "books")
public class Book {

	private int id;
	private List<Author> authors;

	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@ManyToMany(targetEntity= Author.class ,cascade = CascadeType.ALL)
	@JoinTable(name = "authors_books", 
	joinColumns = @JoinColumn(name = "books_id"),
	inverseJoinColumns = @JoinColumn(name = "authors_id"))
	@OrderBy("name")
	public List<Author> getAuthors() {
		return authors;
	}
	
	public void addAuthor(Author a)
	{
		authors.add(a);
	}

	public void setAuthors(List<Author> authors) {
		this.authors = authors;
	}
}

Jetzt hab ich eine Zwischentabelle mit den Spalten books_id und author_id,
aber ich hab keinen Primär Schlüssel in der Tabelle wie kann ich das ändern??
Ich hätte gern einen zusammengesetzen PK aus books_is und author_id…

Gruß

Also bei mir reicht dein Code um das gewünschte Ergebnis zu erreichen …

Auch in der Zwischentabelle??? Mhm stier^^ also wenn ich mich mit Squirrel auf meine DB verbinde und auf Pk gehe steht da nichts drin… =(
:confused:

EDIT:

das steht in author drin vielleicht liegt auch da der fehler …

 	@ManyToMany(mappedBy="authors",targetEntity= Book.class ,cascade = CascadeType.ALL)
	public List<Book> getBooks() {
		return books;
	}

	public void setBooks(List<Book> books) {
		this.books = books;
	}
	
	public void addBook(Book b)
	{
		books.add(b);
	}

Was verwendest du für eine DB? Also mit HSQL gehts - verwende auch den mitgelieferten HSQLDB-Manager.

Die Target-Entity kannst du dir übrigens eigentlich sparen :wink: .

ja nehm ne HSQl DB die wo im Hibernate Tutorial empfohlen wird… ist echt scheiße das es net geht^^… Tabelle ohne Key ist schon nicht so gut

Was sagt dir denn der HSQLDB-Manager? Bzw. die DB (logfile) selbst?

wie meinst was die mir sagen???

naja, ob da der zusammengesetzte PK ersichtbar ist. Evtl. zeigt mein HSQLDB-Manager ja was falsches an - oder dein DB-Manager :wink: .

Und zur Not: Einfach mal nen Datensatz doppetl einfügen und gucken, was passiert.

Datensätze sind dopplet drin darum ist es mir ja aufgefallen ;)…
Ne bei meinen einzelnen Tabellen sind die PK da also jeweils die ID als Sequence ist PK…

Hm … das Beispiel sieht aus wie das aus meinem zip-file wo ich mal irgendwo hochgeladen hab!? Also damit hats bei mir auf jeden Fall funktioniert! Ansonsten hab ich leider keine Ahnung …

Bist du dir auch ganz sicher dass du einen zusammengesetzten Schlüssel hast??? Weil anscheinend muss man das noch ne extra annotation setzten, dass er das macht…
Ok im notfall nimmt man ein Set dann kann man es auch lösen…

Aaaahhh … du hast kein Set genommen. Hab ich irgendwie übersehen, dass da ne List ist :o .

Aber was spricht gegen ein Set? Mach ich normal immer so …

ja nichts frag ja auch ob es so irgendwie klappt…
aber hast du jetzt einen zusammengestzten PK???

jop ^^

irgendwie irritiert mich der Thread enorm :smiley:

hehe warum denn??
Ich versuchs mal mit einem Set und weheh ich hab keinen PK dann raste ich :stuck_out_tongue:

EDIT: HUHU mit nem Set klappts =)

ach, so viel hin und her … da werd ich auf meine alten Tage ganz wuschig :smiley: .

Hauptsache es geht jetzt :slight_smile:

hIOffO ahgfsrdzstlc, tsinvhizgdlu, [link=http://mktesnknhvvj.com/]mktesnknhvvj[/link], http://btiteubalits.com/