我有一个接受POST的休息api来保存候选人。
这个来自POST的对象:
{
"name": "renato",
"email":"rena@gmail.com",
"github":"renato.github.com",
"languages":[{"name":"Java"}],
"frameworks":[{"name":"Spring"}],
"linkedin":"renato.linkedin.com",
"motto":"the best",
"password":"1234"
}
然后我打电话来坚持:
@Transactional
@Override
public boolean addCandidate(Candidate candidate) {
if (candidateRepository.findCandidateByEmail(candidate.getEmail()) == null) {
candidateRepository.save(candidate);
return true;
} else {
return false;
}
}
当尝试保存(自动)语言和框架时,我想检查数据库中是否已有条目,如果存在,则仅更新 通讯员关系表。
这是Pojos:
CANDIDATE:
@Entity
@Table(name = "candidates")
public class Candidate {
@Id
@Column(name = "candidate_id")
@GeneratedValue
private Long cadet_Id;
@Column (name = "email")
private String email;
@Column (name = "name")
private String name;
@Column(name = "password")
private String password;
@Column (name = "motto")
private String motto;
@Column (name = "github")
private String github;
@Column (name = "linkedin")
private String linkedin;
@ManyToMany (cascade = {CascadeType.ALL})
@JoinTable(name = "candidate_languages",
joinColumns = @JoinColumn(name = "language_id"),
inverseJoinColumns = @JoinColumn(name = "candidate_id"))
private Set<Languages> languages;
@ManyToMany (cascade = {CascadeType.ALL})
@JoinTable(name = "candidate_frameworks",
joinColumns = @JoinColumn(name = "framework_id"),
inverseJoinColumns = @JoinColumn(name = "candidate_id"))
private Set<Frameworks> frameworks;
语言
@Entity
@Table(name = "languages")
public class Languages {
@Id
@Column(name = "language_id")
@GeneratedValue
private Long language_Id;
@Column (name = "name")
private String name;
框架:
@Entity
@Table(name = "Frameworks")
public class Frameworks {
@Id
@Column(name = "framework_id")
@GeneratedValue
private Long framework_Id;
@Column (name = "name", unique = true)
private String name;
我正在为每个类使用spring数据和默认的Repositorys:
public interface FrameworkRepository extends CrudRepository<Frameworks,Long{}
感谢您的帮助。