openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From holod <serega.shey...@gmail.com>
Subject Enterprise JavaBeans - HowTo: construct Composite key using other composite key?
Date Thu, 28 Aug 2008 07:33:09 GMT

Hello. I don' undestand how is it possible to do.
Please, see my code:

@Entity
@Table(name = "Person", schema = SCHEMA)
 
public class Person {
 
	@Id
	@GeneratedValue
	@Column(name = "id")
	private int id;
 
	private String medialogyUid;
	private String firstName;
	private String lastName;
	private String patronymic;
	private String biography;
}
 
 
@Entity
@IdClass(Convocation.PK.class)
@Table(name = "Convocation", schema = SCHEMA)
 
public class Convocation {
 
	@Id
	private int number;
	
	@Id
	@ManyToOne(fetch=FetchType.EAGER, cascade={CascadeType.MERGE,
CascadeType.REFRESH, CascadeType.PERSIST})
	private Institution institution;
	
	private Date beginDate;
	private Date endDate;
	
	public Convocation(){
		
	}
	
	public Convocation(Institution inst, int number, Date beginDate, Date
endDate){
		this.institution = inst;
		this.number = number;
		this.beginDate = beginDate;
		this.endDate = endDate;
	}
	
	public static final class PK implements Serializable {
 
		public int number;
		public int institution;
		
		public PK(){
			
		}
		/**@param number is convocation,number
		 * @param institution is convocation.institution.id
		 * */
		public PK(int number, int institution){
			this.number = number;
			this.institution = institution;
		}
		
		@Override
		public boolean equals(Object o) {
			if (!(o instanceof PK))
				return false;
			PK oPK = (PK)o;
			return this.number == oPK.number && this.institution  == oPK.institution;
		}
 
		@Override
		public int hashCode() {
			return ((number == 0) ? 0 : new Integer(number).hashCode()) ^
((institution == 0) ? 0 : new Integer(institution).hashCode());
		}
    }
 
//And finally the last class:
 
@Entity
@IdClass(DeputyMandate.PK.class)
@Table(name = "DeputyMandate", schema = SCHEMA)
public class DeputyMandate {
	
	@Id
    @ManyToOne(fetch=FetchType.EAGER, cascade={CascadeType.MERGE,
CascadeType.REFRESH, CascadeType.PERSIST})
	private Person person;
 
	@Id
	@ManyToOne(fetch=FetchType.EAGER, cascade={CascadeType.MERGE,
CascadeType.REFRESH, CascadeType.PERSIST})
	private Convocation convocation;
	
	private Date dateIn;
	private Date dateOut;
	
	public static final class PK implements Serializable {
               //don't know what to use @Embeddable or what?
	}
    }



I want DeputyMandate to use composite key. This composite key is based on
Person with simple key (int id) and Convocation PK.
Please, tell me how can I make composite key DeputyMandate.PK using simple
key from Person and composite key from Convocation.
-- 
View this message in context: http://n2.nabble.com/Enterprise-JavaBeans---HowTo%3A-construct-Composite-key-using-other-composite-key--tp788926p788926.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.


Mime
View raw message