2015-08-01 3 views
0

У меня есть приложение EJB, в котором я использую Entity beans для базы данных. У меня есть сущности, имеющие однонаправленные отношения один к одному, JobPositionEntity и CandidateEntity.JPA запрос для отношения один к одному

Вот CandidateEntity @Entity общественного класса CandidateEntity расширяет BaseEntity {

private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    private Long meritNumber; 

    private String seatNumber; 

    private String candidateName; 

    private String gender; 

    public Long getMeritNumber() { 
     return meritNumber; 
    } 

    public void setMeritNumber(Long meritNumber) { 
     this.meritNumber = meritNumber; 
    } 

    public String getSeatNumber() { 
     return seatNumber; 
    } 

    public void setSeatNumber(String seatNumber) { 
     this.seatNumber = seatNumber; 
    } 

    public String getCandidateName() { 
     return candidateName; 
    } 

    public void setCandidateName(String candidateName) { 
     this.candidateName = candidateName; 
    } 

    public String getGender() { 
     return gender; 
    } 

    public void setGender(String gender) { 
     this.gender = gender; 
    } 

    @Override 
    public Long getId() { 
     return id; 
    } 

    @Override 
    public void setId(Long id) { 
     this.id = id; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (id != null ? id.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof CandidateEntity)) { 
      return false; 
     } 
     CandidateEntity other = (CandidateEntity) object; 
     if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return "com.nisheeth.config.ejb.entity.CandidateEntity[ id=" + id + " ]"; 
    } 

} 

Вот JobPositionEntity @Entity общественного класса JobPositionEntity расширяет BaseEntity {

private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    private String name; 

    @OneToOne(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL) 
    private CandidateEntity candidate; 

    @ManyToOne(fetch = FetchType.EAGER) 
    private SeasonEntity season; 

    public SeasonEntity getSeason() { 
     return season; 
    } 

    public void setSeason(SeasonEntity season) { 
     this.season = season; 
    } 

    public CandidateEntity getCandidate() { 
     return candidate; 
    } 

    public void setCandidate(CandidateEntity candidate) { 
     this.candidate = candidate; 
    } 

    @Override 
    public Long getId() { 
     return id; 
    } 

    @Override 
    public void setId(Long id) { 
     this.id = id; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (id != null ? id.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof JobPositionEntity)) { 
      return false; 
     } 
     JobPositionEntity other = (JobPositionEntity) object; 
     if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { 
      return false; 
     } 
     return true; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @Override 
    public String toString() { 
     return "com.nisheeth.config.ejb.entity.JobPositionEntity[ id=" + id + " ]"; 
    } 

} 

Я хочу, чтобы выбрать кандидатов, которые не находятся в JobPositionEntity. У меня есть этот запрос, который не работает для меня:

select ce.candidateName, ce.id from JobPositionEntity jp left join jp.candidate ce where ce <> null 

Может кто-нибудь помочь написать этот вопрос? Заранее спасибо.

+0

Я не видит никакой связи между публикуемой JPQL и описанием того, что вы хотите. Не могли бы вы прояснить? Используйте пример. –

+0

Существует одно отношение, если вы видите в JobPositionEntity. –

+0

Это ничего не разъясняет. Предположим, что у вас J1-C1, J2-C2, J3-null, null-C4, где J - JobPosition, а C - кандидат. Что должен искать запрос? –

ответ

Смежные вопросы