2017-09-11 1 views
0

사용 엔터티 관리자 열 값 중 하나가 참인 데이터베이스에서 행 ID를 가져 오는 방법과 그 행을 업데이트하는 방법. 내 DB 구조는 다음과 같다 : 일의 FALSE하고 나머지는 TRUE하고 해당 행 ID 업데이 트를받은 후 :EntityManager를 사용하여 db로부터 ID를 얻는 방법?

ID EMPLOYEES START_TIME END_TIME MONDAY TUESDAY  WEDNESSDAY  THURSDAY FRIDAY SATURDAY SUNDAY 
1  5   1.0  7.0  TRUE  FALSE  FALSE   FALSE  FALSE  FALSE  FALSE 

어떻게 월요일이있는 행의 ID 얻을 수 .

import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 
import javax.persistence.criteria.CriteriaBuilder; 
import javax.persistence.criteria.CriteriaQuery; 
import javax.persistence.criteria.ParameterExpression; 
import javax.persistence.criteria.Root; 

import org.springframework.stereotype.Repository; 

/** 
* @author Junaid KHALID 
* 
*/ 
@Repository 
public class HistogramDAO { 
@PersistenceContext 
private EntityManager entityManager; 


public void create(Histogram histogram) { 
entityManager.persist(histogram); 
} 


public void update(Histogram histogram) { 
entityManager.merge(histogram); 
} 


public Histogram getBesoinRequestById(long id) { 
return entityManager.find(Histogram.class, id); 
} 


public void delete(long id) { 
Histogram histogram = getBesoinRequestById(id); 
if (histogram != null) { 
entityManager.remove(histogram); 
} 
} 
} 

이 : 이것은 내 DAO이다

import java.io.Serializable; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 
import javax.validation.constraints.NotNull; 
import javax.validation.constraints.Size; 

import org.springframework.stereotype.Component; 


@Entity 
@Table(name = "HISTOGRAM") 
public class Histogram implements Serializable { 

    private long id; 
    private int employees; 
    private double startTime; 
    private double endTime; 

    private boolean monday; 
    private boolean tuesday; 
    private boolean wednessday; 
    private boolean thursday; 
    private boolean friday; 
    private boolean saturday; 
    private boolean sunday; 

    public Histogram() { 
    } 

    public Histogram(int employees, double startTime, double endTime, boolean monday, boolean tuesday, 
      boolean wednessday, boolean thursday, boolean friday, boolean saturday, boolean sunday) { 
     this.employees = employees; 
     this.startTime = startTime; 
     this.endTime = endTime; 
     this.monday = monday; 
     this.tuesday = tuesday; 
     this.wednessday = wednessday; 
     this.thursday = thursday; 
     this.friday = friday; 
     this.saturday = saturday; 
     this.sunday = sunday; 
    } 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    public long getId() { 
     return id; 
    } 


    public void setId(long id) { 
     this.id = id; 
    } 

    //@Size(min = 2, max = 255, message = "Enter between 2 and 255 characters!") 
    @Column(name = "employees") 
    @NotNull 
    public int getEmployees() { 
     return employees; 
    } 

    public void setEmployees(int employees) { 
     this.employees = employees; 
    } 

    @Column(name = "startTime") 
    @NotNull 
    public double getStartTime() { 
     return startTime; 
    } 

    public void setStartTime(double startTime) { 
     this.startTime = startTime; 
    } 

    @Column(name = "endTime") 
    @NotNull 
    public double getEndTime() { 
     return endTime; 
    } 

    public void setEndTime(double endTime) { 
     this.endTime = endTime; 
    } 

    @Column(name = "monday") 
    @NotNull 
    public boolean isMonday() { 
     return monday; 
    } 

    public void setMonday(boolean monday) { 
     this.monday = monday; 
    } 

    @Column(name = "tuesday") 
    @NotNull 
    public boolean isTuesday() { 
     return tuesday; 
    } 

    public void setTuesday(boolean tuesday) { 
     this.tuesday = tuesday; 
    } 

    @Column(name = "wednessday") 
    @NotNull 
    public boolean isWednessday() { 
     return wednessday; 
    } 

    public void setWednessday(boolean wednessday) { 
     this.wednessday = wednessday; 
    } 

    @Column(name = "thursday") 
    @NotNull 
    public boolean isThursday() { 
     return thursday; 
    } 

    public void setThursday(boolean thursday) { 
     this.thursday = thursday; 
    } 

    @Column(name = "friday") 
    @NotNull 
    public boolean isFriday() { 
     return friday; 
    } 

    public void setFriday(boolean friday) { 
     this.friday = friday; 
    } 

    @Column(name = "saturday") 
    @NotNull 
    public boolean isSaturday() { 
     return saturday; 
    } 

    public void setSaturday(boolean saturday) { 
     this.saturday = saturday; 
    } 

    @Column(name = "sunday") 
    @NotNull 
    public boolean isSunday() { 
     return sunday; 
    } 

    public void setSunday(boolean sunday) { 
     this.sunday = sunday; 
    } 

} 

:

SELECT id 
FROM histogram 
WHERE monday = true 
AND tueday = false 
AND wednessday = false 
AND thursday = false 
AND friday = false 
AND saturday = false 
AND sunday = false ; 

이 내 모델 클래스 : SQL에서

는 비슷한이 좋아하는 것 ID를 얻으려면 제 서비스 클래스입니다 :

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 
import org.springframework.transaction.annotation.Transactional; 

/** 
* @author Junaid KHALID 
* 
*/ 
@Component 
@Transactional 
public class HistogramService { 

@Autowired 
private HistogramDAO histogramDAO; 

public void create(Histogram histogram) { 
    histogramDAO.create(histogram); 
} 

public void update(Histogram histogram) { 
    histogramDAO.update(histogram); 
    } 

public void delete(long id) { 
    histogramDAO.delete(id); 
} 
} 

답변

0

친숙한 사람이라면 jpql을 사용하여 지정된 기준에 맞는 항목을 찾을 수 있습니다.

TypedQuery<Long> query = entityManager.createQuery("SELECT h.id FROM Histogram h WHERE h.monday = true AND h.tuesday = false AND h.wednessday = false AND h.thursday = false AND h.friday = false AND h.saturday = false AND h.sunday = false "); 

List<Long> histograms = query.getResultList(); 

그런 다음 히스토그램 개체를 얻을 적용 검색된 ID를 사용

Histogram histogram = entityManager.find(Histogram.class,histogramId); 
//changes on the entity 
... 
entityManager.persist(histogram); 

다른 선택 기준 API를 사용하는 것입니다 변경됩니다.

관련 문제