This is my annotation class and i want userId
and groupId
column both as primary key.
I have found more questions (Question) about this, but didn\'t fo
You should create a new @Embeddable
class containing the PK fields:
@Embeddable
public class user_groupId implements Serializable {
@Column(name="userId")
private String userId;
@Column(name="groupId")
private String group;
}
And use it in the @Entity
as an @EmbeddedId
:
@Entity
public class user_group {
@EmbeddedId
user_groupId id;
...
}
You could also use the @IdClass
annotation to that effect.
This excellent answer by Pascal Thivent elaborates on the details. You can also take a look at this other answer I posted to a almost identical question some time ago.
As a side note, if you've got control over the DB structure, you might also consider avoiding composite keys. There are some reasons to do so.
you can create a composite primary key in hibernate using @UniqueConstraint annotation.
@Table(name="user_group",uniqueConstraints=@UniqueConstraint(columnNames= {"userId","groupId"}))
public class user_group
{
@Column(name="userId")
private String userId;
@Column(name="groupId")
private String group;
}
above method is not feasible if we use spring because for creating composite primary key we have to create a class is not a good thing.
in hibernate and spring you only have to create POJO classes which are available as an entity on your system.