Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确保HashMap的每次迭代都是事务性的_Java_Spring_Hashmap_Crud_Transactional - Fatal编程技术网

Java 如何确保HashMap的每次迭代都是事务性的

Java 如何确保HashMap的每次迭代都是事务性的,java,spring,hashmap,crud,transactional,Java,Spring,Hashmap,Crud,Transactional,我有一个方法可以从hashmap中删除值,而不删除键 HashMap的结构如下所示,注意Kennel和Dog都是Java对象: Map<Kennel, List<Dog>> mapOfKennels; 重构您的代码,以便通过专用方法处理每个犬舍的移除。然后将@Transactional注释添加到此方法。例如在DogRepository中 @Transactional public class DogRepository{ public void deleteDo

我有一个方法可以从hashmap中删除值,而不删除键

HashMap的结构如下所示,注意Kennel和Dog都是Java对象:

Map<Kennel, List<Dog>> mapOfKennels;

重构您的代码,以便通过专用方法处理每个犬舍的移除。然后将@Transactional注释添加到此方法。例如在DogRepository中

@Transactional
public class DogRepository{

   public void deleteDogs(List<Dog> dogs){
       //delete all dogs
   }
}
然后在你的客户端代码中

   public void deleteDogsFromKennels(Map<Kennel, List<Dog>> mapOfKennelsAndDogs) {
    //For each Kennel in the Map
     for (Map.Entry<Kennel, List<Dog>> entry :mapOfKennelsAndDogs.entrySet()){
        String key = entry.getKey().getId();
        List<Dog> dogList = entry.getValue();
        try{
           dogRepository.deleteDogs(dogList);
        }
        catch(Exception ex){
            //log failed to delete kennel with key
         }
     }
   }
确保deleteDogs方法与deleteDogsFromKennels方法在单独的类中,否则事务将无法工作。

尝试在方法级别添加@Transactional,即deleteDogsFromKennels,或者在类级别添加@Transactional,如果您不想像@ekemChitsiga在下面的回答中所说的那样重构代码。这应该行得通。
   public void deleteDogsFromKennels(Map<Kennel, List<Dog>> mapOfKennelsAndDogs) {
    //For each Kennel in the Map
     for (Map.Entry<Kennel, List<Dog>> entry :mapOfKennelsAndDogs.entrySet()){
        String key = entry.getKey().getId();
        List<Dog> dogList = entry.getValue();
        try{
           dogRepository.deleteDogs(dogList);
        }
        catch(Exception ex){
            //log failed to delete kennel with key
         }
     }
   }