저는 jOOQ를 처음 사용하고 쿼리를 jOOQ로 변환해야합니다.방법 orderby/group by/쿼리 jOOQ에서 찾지 못했습니다
내 테이블 "CN_THEODOINO"에는 NAM (YEAR을 의미)과 THANG (MONTH)의 두 필드가 있습니다. 데이터 형식은 short 및 byte입니다.
sysdate와 해당 테이블의 NAM 및 THANG 사이의 다른 달을 계산하고 싶습니다.
그런 다음 필자는 매개 변수의 p_diff와 비교하여 그보다 큰 매개 변수를 선택합니다.
나는이 시도 :
public List<CN_DS_NO> layDsKHangNo3(String sInputParam) throws JSONException {
try {
Calendar c = Calendar.getInstance();
int currMonths = c.get(Calendar.YEAR) * 12 + c.get(Calendar.MONTH);
JSONObject jsonObj = new JSONObject(sInputParam);
short p_diff = (short)jsonObj.getInt("SO_THANGNO");
Condition condition = DSL.trueCondition();
condition = condition.and(bangDsChuyenNo2.TIEN_NO.gt(Long.valueOf(0)));
condition = condition.and(bangDsChuyenNo2.NAM.mul(12).add(bangDsChuyenNo2.THANG).add(p_diff).sub(currMonths).lessOrEqual((short)0));
condition = condition.groupBy(bangDsChuyenNo2.MA_KHANG);
condition = condition.having(DSL.count(bangDsChuyenNo2.ID_HDON).gt(jsonObj.getInt("SO_HOADON")).and(DSL.sum((Field) field(bangDsChuyenNo2.TIEN_NO)).gt(jsonObj.getLong("TONG_NO"))));
qDsChuyenNo = this.getCreate()
.select()
.from(bangDsChuyenNo)
.where(condition);
return nativeQuery(this.getEm(), qDsChuyenNo, CN_DS_NO.class);
} catch (Exception ex) {
throw ex;
}
내가 두 가지 오류를 얻을 말 :
오류 (141,34) : 기호를 찾을 수 없습니다; 심볼 : 메소드 groupBy (org.jooq.TableField); 위치 : org.jooq.Condition 유형의 변수 조건
오류 (142,34) : 기호를 찾을 수 없습니다. 심볼 : 메소드 데 (org.jooq.Condition); 위치 : org.jooq.Condition 타입의 변수 조건
그래서 어떻게해야할까요? 이미 Google과 포럼에서 검색했지만 답변을 얻을 수 없습니다. 도와주세요.
통찰력을 얻은 Lukas에게 감사드립니다. curlMonths - p_diff - bangDsChuyenNo2 대신 bangDsChuyenNo2.NAM + bangDsChuyenNo2.THANG + p_diff - currMonths를 의미하는 bangDsChuyenNo2.NAM.mul (12) .add (bangDsChuyenNo2.THANG) .add (p_diff) .minus (currMonths)를 써야하나요? .NAM * 12 - bangDsChuyenNo2.THANG. 두 번째 것은 더 자연 (나에게) 인 것 같습니다. –
제발, @ NghịLê : 당신은 새로운 질문을 할 수 있습니까? 스택 오버플로는 언제든지 질문 ID가 없어지지 않습니다. 이 의견에 질문에 답하기는 어렵습니다 ... –