Je suis incapable d'effectuer CRUD via json POST du client reposant Postman sur la table composite ayant la colonne supplémentaire .J'utilise Spring boot, repos de données de printemps et printemps JPA. J'ai 3 tables dans la base de données
-user
-competency
-user_competency (joindre/tableau composite avec colonne supplémentaire)
Voici mes coursRessort Données repos comment effectuer CRUD sur la relation @manytomany, table composite avec la colonne supplémentaire
utilisateur
@Entity
@Table(name = "\"user\"", schema = "public")
@JsonIdentityInfo(
generator = ObjectIdGenerators.IntSequenceGenerator.class,
property = "userId")
public class User implements java.io.Serializable {
private Long userId;
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id", unique = true, nullable = false)
public Long getUserId() {
return this.userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
private Set<UserCompetency> userCompetencies = new HashSet<UserCompetency>(0);
@OneToMany(fetch = FetchType.EAGER,cascade = {CascadeType.ALL}, mappedBy = "user")
public Set<UserCompetency> getUserCompetencies() {
return this.userCompetencies;
}
public void setUserCompetencies(Set<UserCompetency> userCompetencies) {
this.userCompetencies = userCompetencies;
}
}
Compétence
@Entity
@Table(name = "competency", schema = "public")
@JsonIdentityInfo(
generator = ObjectIdGenerators.IntSequenceGenerator.class,
property = "competencyId")
public class Competency implements java.io.Serializable {
private Long competencyId;
private Set<UserCompetency> userCompetencies = new HashSet<UserCompetency>(0);
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "competency_id", unique = true, nullable = false)
public Long getCompetencyId() {
return this.competencyId;
}
public void setCompetencyId(Long competencyId) {
this.competencyId = competencyId;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "competency")
public Set<UserCompetency> getUserCompetencies() {
return this.userCompetencies;
}
public void setUserCompetencies(Set<UserCompetency> userCompetencies) {
this.userCompetencies = userCompetencies;
}
}
UserCompetency
@Entity
@Table(name = "user_competency", schema = "public")
@JsonIdentityInfo(
generator =ObjectIdGenerators.IntSequenceGenerator.class,
property = "id")
public class UserCompetency implements java.io.Serializable {
private UserCompetencyId id;
private Level level;
private User user;
private Competency competency;
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "competencyId", column = @Column(name = "competency_id", nullable = false)),
@AttributeOverride(name = "userId", column = @Column(name = "user_id", nullable = false)) })
public UserCompetencyId getId() {
return this.id;
}
public void setId(UserCompetencyId id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "level_id")
public Level getLevel() {
return this.level;
}
public void setLevel(Level level) {
this.level = level;
}
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id", nullable = false, insertable = false, updatable = false)
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}
@ManyToOne(fetch = FetchType.EAGER,cascade=CascadeType.ALL)
@JoinColumn(name = "competency_id", nullable = false, insertable = false, updatable = false)
public Competency getCompetency() {
return this.competency;
}
public void setCompetency(Competency competency) {
this.competency = competency;
}
}
UserCompetencyId
@Embeddable
public class UserCompetencyId implements java.io.Serializable {
private Long competencyId;
private Long userId;
public UserCompetencyId() {
}
public UserCompetencyId(Long competencyId, Long userId) {
this.competencyId = competencyId;
this.userId = userId;
}
@Column(name = "competency_id", nullable = false)
public Long getCompetencyId() {
return this.competencyId;
}
public void setCompetencyId(Long competencyId) {
this.competencyId = competencyId;
}
@Column(name = "user_id", nullable = false)
public Long getUserId() {
return this.userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof UserCompetencyId))
return false;
UserCompetencyId castOther = (UserCompetencyId) other;
return (this.getCompetencyId() == castOther.getCompetencyId()) && (this.getUserId() == castOther.getUserId());
}
}
Supposons que je l'ai déjà enregistrer dans les tableaux de l'utilisateur et la compétence et je veux assocaite à la fois que je suis en train de poster comme celui-ci , mais il me donne l'erreur de 405 Méthode non autorisée.
aide nécessaire, ce qui devrait être la structure de JSON à l'utilisateur affiché sera déjà exister et la compétence sera peut exister ou nouveau peut être ajouté et associé à l'utilisateur existant.
Les données sont sauvegardées dans la table composite, mais ma classe UserCompetency a une autre propriété, donc j'ai une autre colonne dans la table ie level_id, qui est également la clé étrangère, donnée en question sur le shoot écran, merci de le regarder et maintenant comment dois-je publier l'ID de niveau dans json post private UserCompetencyId id; \t privé Niveau de niveau; \t privé Utilisateur utilisateur; \t Compétence de compétence privée; – Taimur
Ajout de '," niveau ":"/niveau/123 "'? – KLHauser
ok je l'ai, en fait la classe de dépôt n'a pas été exposée pour le niveau et le problème face, une chose de plus que je dois demander est que, si j'ai un utilisateur existant et je veux ajouter une nouvelle compétence à l'utilisateur existant dans 1 aller via json post, comment je vais le faire. – Taimur