# Primery Key festlegen



## Gast (12. Nov 2008)

Guten Morgen!

Ich würde gerne den Primery Key in einer Klasse über 2 Felder in eben dieser legen.
Also laut meinem Hibernate Buch einen "Natürlichen Schlüssel" und keinen "Technischen Schlüssel".

Leider haben des die Autoren versäumt in dem Buch zu erklären wie man das seinen Klassen mitteilt.
Hoffe jmd. von euch kann mir ein Beispiel geben wie ich 2 Werte als Primery Key zusammen fassen kann.

Danke schon mal im Vorraus


----------



## Gast (12. Nov 2008)

B the way: Ihc wollte den Titel eigtl. "Hibernate: Primary Key festlegen" nennen - aber das Forum hat es "aus Spam Schutz Gründen" nicht zugelasen :-/


----------



## SlaterB (12. Nov 2008)

http://www.hibernate.org/hib_docs/reference/en/html/mapping.html#mapping-declaration-compositeid
5.1.7. composite-id 

vermute ich


----------



## Gast (12. Nov 2008)

hmm okay - weisst du zufällig auch wie man das per annotation regeln kann?!


----------



## SlaterB (12. Nov 2008)

ich bin Annotation-Feind


----------



## Gast (12. Nov 2008)

damn


----------



## SlaterB (12. Nov 2008)

aber google kann ich auch noch bedienen


http://www.google.de/search?hl=de&q=composite-id+annotation&meta=

http://java-aap.blogspot.com/2006/04/hibernate-annotations-composite.html


----------



## Gast (12. Nov 2008)

hmm also ich raffs irgenwie nicht :-/

Hab das mit diesem Code hier ausprobiert: 
http://java-aap.blogspot.com/2006/04/hibernate-annotations-composite.html

und alles was ich bekomme ist derzeit eine Fehlermeldung:
Could not determine type for: XXX

Wo er mir sagt er weiss nichts mit einer Klasse anzufangen die ich in einer mit @Transient gekennzeichneten Methode abfrage - obwohl ich nur den ID kram ausgetauscht habe ...


----------



## GilbertGrape (12. Nov 2008)

Ich kann die Seite hier nicht öffnen,aber ich hab das mit EmbeddedIds so gemacht:


```
@Entity
@Table
public class PersistentClass {
	
	@Embeddable
	public static class Id implements Serializable{
		private Long 	id1;
		private Long 	id2;

         public Id(){
         super();     
	}	
		public Id(Long id1, Long id2){
			super();
			this.id1= id1;
			this.id2= id2;
		}		
		
	}
	
	@EmbeddedId
	private Id 				id = new Id();
	
	@Column
	//...restliche Spalten
	
	
	
}
```

Ansonsten poste doch mal deinen Code!


----------

