revised Posted March 22, 2017 at 09:37 PM Report Share #603321 Posted March 22, 2017 at 09:37 PM (edited) Boa noite pessoal Estou a fazer a seguinte query a BD que tenho criada em PostGres : UPDATE "NTFGWDB"."Voucher" SET state_id = 3 WHERE serial_number = (SELECT serial_number FROM "NTFGWDB"."Voucher" WHERE group_id = 1 AND state_id = 1 ORDER BY v.id ASC limit 1) RETURNING serial_number; Basicamente preciso de um voucher que esteja ativo e pertença a um determinado grupo, como preciso de fazer a reserva desse voucher coloco o estado em reservado e retorno o voucher mais antigo com estas condições. Estou a utilizar o mybatis para fazer o mapeamento mas estou a ter problemas com esta query. VoucherMapper @Update("UPDATE \"NTFGWDB\".\"Voucher\"\n" + " SET state_id = 3\n" + " WHERE serial_number = (SELECT serial_number\n" + " FROM \"NTFGWDB\".\"Voucher\"\n" + " WHERE group_id = 1 AND state_id = 1\n" + " ORDER BY id ASC\n" + " limit 1)\n" + " RETURNING *") @Results({ @Result(property = "id", column = "id"), @Result(property = "serialNumber", column = "serial_number"), @Result(property = "activationCode", column = "activation_code"), @Result(property = "groupId", column = "group_id"), @Result(property = "expiricyDate", column = "expiricy_date"), @Result(property = "stateChangeDate", column = "state_change_date"), @Result(property = "loadedDate", column = "loaded_date"), @Result(property = "stateId", column = "state_id") }) public Voucher getActiveVoucher(); VoucherService @Override public Voucher getActiveVoucher() { SqlSession session = sqlFactory.openSession(); try { return session.getMapper(VoucherMapper.class).getActiveVoucher(); } finally { session.close(); } } Construtor public Voucher(long id, long serialNumber, long activationCode, int groupId, Date expiricyDate, int stateId, Date stateChangeDate, Date loadedDate) { this.id = id; this.serialNumber = serialNumber; this.activationCode = activationCode; this.groupId = groupId; this.expiricyDate = (Date) expiricyDate.clone(); this.stateId = stateId; this.stateChangeDate = (Date) stateChangeDate.clone(); this.loadedDate = (Date) loadedDate.clone(); } Main @Test public void connectGetActiveVoucher() { Voucher voucher = new VoucherService().getActiveVoucher(); System.out.println(voucher); } Ao compilar acontece o seguinte erro : ache.ibatis.binding.BindingException: M Citação ache.ibatis.binding.BindingException: Mapper method 'com.db.services.mapper.VoucherMapper.getActiveVoucher' has an unsupported return type: class com.db.object.Voucher at com.testing.db.factory.TestingStuff_Ricardo.connectGetActiveVoucher(TestingStuff_Ricardo.java:89) Alguem consegue perceber o que se passa? Obrigado, Ricardo Pereira Edited March 23, 2017 at 01:15 AM by revised Link to comment Share on other sites More sharing options...
apocsantos Posted March 23, 2017 at 09:17 AM Report Share #603326 Posted March 23, 2017 at 09:17 AM Bom dia, Estás a ter um erro de tipo de retorno, na seguinte linha: Citação return session.getMapper(VoucherMapper.class).getActiveVoucher(); Pelo que percebi do código deverias retornar um objecto do tipo Voucher e estás a retornar algo que não o esperado. Cordiais cumprimentos, Apocsantos "A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito" Link to comment Share on other sites More sharing options...
revised Posted March 23, 2017 at 11:54 AM Author Report Share #603334 Posted March 23, 2017 at 11:54 AM 2 horas atrás, apocsantos disse: Bom dia, Estás a ter um erro de tipo de retorno, na seguinte linha: Pelo que percebi do código deverias retornar um objecto do tipo Voucher e estás a retornar algo que não o esperado. Cordiais cumprimentos, Apocsantos Bom dia apocsantos, Afinal não existia nenhum problema com os objetos, consegui resover a situação da formar que menos sentido fazia para mim... Basicamente no VoucherMapper tive de dizer que aquele update na realidade é um selecte ou seja mudei de @Update para @Select... Obrigado na mesma pela ajuda. Cumprimentos. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now