내가 문제가되는 곳 : org.hibernate.MappingException : 아니요 1111 JPA 기본 쿼리를 사용하여 postgres 함수를 호출하려고 할 때 JDBC 유형에 대한 Dialect 매핑이 없습니다. .JPA Hibernate Call Postgres Function Void 반환 MappingException :
시동 싱글 톤에 EJB 타이머를 만들어 6 시간마다 Postgres 기능을 실행했습니다. 이 함수는 void를 반환하고 만료 된 레코드를 확인하고, 삭제하고, 일부 상태를 업데이트합니다. 인수를 취하지 않고 void를 반환합니다.
포스트그레스 기능을 완벽하게 나는 그것이 PgAdmin 쿼리 도구 사용하여 호출하는 경우 실행 (선택 기능();) void를 반환합니다.
Glassfish 3.1.1에서 응용 프로그램을 배포 할 때 예외가 발생하고 배포하지 못했습니다.
먼저 JPA 물건 : 싱글이 그것을 호출
public void runRequestCleanup() { String queryString = "SELECT a_function_that_hibernate_chokes_on()"; Query query = em.createNativeQuery(queryString); Object result = query.getSingleResult(); }
이 여기
코드입니다 :WARNING: A system exception occurred during an invocation on EJB UserQueryBean method public void com.mysoftwareco.entity.utility.UserQueryBean.runRequestCleanup() javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean ...STACK TRACE BLAH BLAH BLAH ... Caused by: javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
이
은 (단축) 스택 추적입니다 :@Startup
@Singleton
public class RequestCleanupTimer {
@Resource
TimerService timerService;
@EJB
UserQueryBean queryBean;
@PostConstruct
@Schedule(hour = "*/6")
void runCleanupTimer() {
queryBean.runRequestCleanup();
}
}
그리고 기능 :
CREATE OR REPLACE FUNCTION a_function_that_hibernate_chokes_on()
RETURNS void AS
$BODY$
DECLARE
var_field_id myTable.field_id%TYPE;
BEGIN
FOR var_field_id IN
select field_id from myTable
where status = 'some status'
and disposition = 'some disposition'
and valid_through < now()
LOOP
BEGIN
-- Do Stuff
END;
END LOOP;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
아주 좋습니다. 나는 다른 대답을보고 너의 것이 최고라고 생각한다. – luizcarlosfx
당신과 @ Kikin-Sama의 방법이 모두 효과가있었습니다. – BillR