java - Spring-data-jpa Maklumat yang baru disimpan tidak dapat ditemui
扔个三星炸死你
扔个三星炸死你 2017-06-12 09:25:28
0
2
1265

1 struktur bahagian belakang

Struktur latar belakang ialah SpringMVC, Spring, jpa(HibernateJpaDialect),
DataSource(c3p0), Mysql(InnoBDB),
transactionManager(JpaTransactionManager).

2 Persekitaran bermasalah

@Transactional(value = "transactionManager", isolation = Isolation.READ_UNCOMMITTED) public Object addScenicSpot(int tourGuideID, String jsonStr) { Djd_js entity = new Djd_js(); try{ _setEntity(entity, jsonStr); entity.setDaoyouID(tourGuideID); jdjsDao.save(entity); int spotId = entity.getId(); //添加信息到消息队列中 try { Sender sender = new SenderImpl(); sender.getGPSFromBaiduAPI("jdjs", spotId, entity.getDizhi()); } catch (InterruptedException e) { return false; } return spotId; }catch (Exception e){ return false; } }
以上是保存的部分,并把得到的 ID 发送到消息队列中,下边是消息队列的处理部分
public boolean updateLngAndLat(MessageVo messageVo) { System.out.println("CreateTime--------"+messageVo.getCreateDate()); System.out.println("Address--------"+messageVo.getContent()); System.out.println("Id--------"+messageVo.getId()); Djd_js entity = jdjsDao.findOne(messageVo.getId()); System.out.println("entity-Address--------"+entity.getDizhi()); 、、运行到这里就直接卡住了,如果注释掉查询,其他的调用皆正常。 Map result = LngAndLatUtil.getLngAndLat(((MessageVo) messageVo).getContent()); System.out.println("result--------"+(int)result.get("result")); if (1 == (int)result.get("result")){ entity.setJingdu(Double.valueOf(result.get("lng").toString())); entity.setWeidu(Double.valueOf(result.get("lat").toString())); System.out.println("message-------------------------------"+"lng:"+Double.valueOf(result.get("lng").toString())+", lat:"+Double.valueOf(result.get("lat").toString())); jdjsDao.updateLngAndLatBySenciSpotID(messageVo.getId(), (Double) result.get("lng"), (Double) result.get("lat")); }else { System.out.println("message-------------------------------False"); } return false; }

3 Penerangan masalah

Hujung hadapan memanggil kaedah addScenicSpot() untuk menyimpan maklumat ke pangkalan data, dan kemudian menghantar ID dalam kawalan data yang disimpan ke baris gilir mesej Kemudian pelanggan memproses maklumat dalam baris gilir dan menanyakan maklumat yang baru disimpan berdasarkan ID. Kemudian panggil antara muka luaran untuk menanyakan longitud dan latitud, dan menyimpan longitud dan latitud yang diperoleh dalam pangkalan data.
Masalahnya sekarang ialah menyimpan maklumat adalah perkara biasa, tetapi apabila ia berkaitan dengan pemprosesan pelanggan, maklumat yang disimpan tidak boleh ditemui berdasarkan ID yang diperolehi.

4 Teka masalahnya

Sebab pepijat ialah penyerahan transaksi musim bunga lebih lewat daripada mesej pengeluaran baris gilir mesej, mengakibatkan data yang salah diperoleh apabila baris gilir mesej menggunakan mesej
Inspirasi datang dari sini: http://www.cnblogs. com/taocon...

扔个三星炸死你
扔个三星炸死你

membalas semua (2)
迷茫

Panggilan segerak, tukar kepada panggilan tak segerak?

@Async
getGPSFromBaiduAPI

    扔个三星炸死你

    Masalah telah diselesaikan, dan kaedah di sini digunakan: http://www.cnblogs.com/taocon...

      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!