I ever posted a same question before. I use the composite primary key for my class
@Entity
@Table(name="group_members")
@IdClass(MembershipPK.class)
public class Membership implements Serializable {
private long groupId;
private long personId;
public Membership() {}
@Id
@Column(name="GROUP_ID", nullable = false, insertable = false, updatable = false)
public long getGroupId() {return groupId;}
public void setGroupId(long groupId) {this.groupId = groupId;}
@Id
@Column(name="PERSON_ID")
public long getPersonId() {return personId;}
public void setPersonId(long personId) {this.personId = personId;}
}
@Embeddable
public class MembershipPK implements Serializable{
private long groupId;
private long personId;
public MembershipPK() {}
public MembershipPK(long groupId, long personId) {
this.groupId = groupId;
this.personId = personId;
}
public long getGroupId() {return groupId;}
public void setGroupId(long groupId) {this.groupId = groupId;}
public long getPersonId() {return personId;}
public void setPersonId(long personId) {this.personId = personId;}
}[org.hibernate.hql.ast.HqlSqlWalker] processQuery() :
( SELECT ( {select clause} (membership0_.personId, membership0_.groupId) ) ( FromClause{level=1} group_members membership0_ ) )