je une entité appelée UserWithRoles:clé primaire Composit qui contient une clé étrangère
@Entity
@Getter
@Setter
public class UserWithRoles implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private String password;
@OneToMany(mappedBy = "user")
private List<UserRole> roles;
}
Une entité UserRole:
@Entity
@Getter
@Setter
@IdClass(UserRolePK.class)
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "roleType", discriminatorType = DiscriminatorType.STRING, length = 10)
abstract public class UserRole implements Serializable
{
@Id
// It should be mapped as a foreign PK by user.id (user field declared below)
private int userID;
@Id
private String roleType;
@ManyToOne
@JoinColumn(name="user_id", referencedColumnName = "id")
private UserWithRoles user;
}
La UserRolePK de classe de clé primaire:
@Data
public class UserRolePK implements Serializable
{
private int userID;
private String roleType;
}
I voulez créer un composant PK à UserRole: UserWithRoles.id + UserRole.roleType Comment puis-je ma p-il à la base de données? Dois-je utiliser le type UserWithRoles dans la classe PK au lieu de l'ID? Est-ce une bonne idée? Ou je devrais juste utiliser PK normal à UserRole? La relation serait quelque chose comme cela entre les entités ClientOrder et ClientOrdetItem: (ClientOrder.id + ClientOrderItem.num)