Je suis fauché avec ce problème, S'il vous plaît tout le monde peut aider à ce sujet. Je vais emboîter JSON comme entrée pour le contrôleur, qui est ensuite converti en type d'objet MarketPrice.Tout fonctionne correctement, Seulement lors de la sauvegarde suis face problème.Le premier enregistrement sera enregistré plusieurs fois.Mais dans la boucle de la deuxième fois une autre valeurs sera montré pendant le débogage.Les mêmes valeurs sont enregistrées dans DB plusieurs fois, même si une autre liste est présente dans hibernate
MarketPrice.java
@Entity
@Table(name = "MarketPrice")
public class MarketPrice {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "itemId")
private Long itemId;
@Column(name = "state")
private String state;
@Column(name = "district")
private String district;
@Transient
public Items currentItem;
@Column(name="itemName")
private String itemName;
@Column(name="minimumPrice")
private Float minimumPrice;
@Column(name="maximumPrice")
private Float maximumPrice;
}
Items.java
public class Items implements Serializable {
private static final long serialVersionUID = -2428562977284114465L;
public String itemName;
public Float minimumPrice;
public Float maximumPrice;
}
contrôleur
@RequestMapping(value = {"/save"} , method = RequestMethod.POST,consumes = "application/json")
@ResponseBody
public MarketPrice bulkSaveMarketAnalysis(@RequestBody
String marketPrices, HttpServletResponse response,
HttpServletRequest request) throws JsonProcessingException, IOException, JSONException{
MarketPrice marketPrice1 = new MarketPrice();
Gson gson = new Gson();
MarketPrice marketPrice = gson.fromJson(marketPrices, MarketPrice.class);
if(marketPrice.getState() != null){
String marketDataResponse = analyserService.saveListOfMarketPrice(marketPrice);
System.out.println(marketDataResponse);
return marketPrice1;
}
DAO.java
public String saveListOfMarketPrice(MarketPrice marketPrice) {
final Session session = getSession();
Transaction tx = session.beginTransaction();
marketPrice.setAnalysisDate(new Date());
for (Items item : marketPrice.marketPrices) {
marketPrice.currentItem = item;
marketPrice.setItemName(marketPrice.currentItem.getItemName());
marketPrice.setUnitofPrice(marketPrice.currentItem.getUnitofPrice());
marketPrice.setMinimumPrice(marketPrice.currentItem.getMinimumPrice());
marketPrice.setMaximumPrice(marketPrice.currentItem.getMaximumPrice());
session.save(marketPrice);
tx.commit();
}
session.close();
return "success";
}
données JSON contrôleur
{"marketPrices":[{"itemName":"Grapes","unitofPrice":"Kg","minimumPrice":"11","maximumPrice":"22"},{"itemName":"Mango","unitofPrice":"Quintal","minimumPrice":"55","maximumPrice":"66"}],"state":"xyz","district":4,"marketPlace":5001,"marketName":"Apmc","category":"Fruits"}
question ici est fais face à un seul enregistrement sera ajouté dans DB à plusieurs reprises.
Il s'agit d'une nouvelle variable créée dans chaque boucle. Le nom de la variable décrit son utilisation. –
Lors de l'utilisation de cette variable sauf les variables currentItem, toutes sont définies sur null qui sont dans l'objet marketPrice – Hema
Les deux sont identiques. Édité –