使用Spring数据Hibernate使用Nested Array of Objecs保存Json时防止重复条目

时间:2017-09-01 11:34:21

标签: java mysql json spring-data

我有一个接受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{}

感谢您的帮助。

0 个答案:

没有答案