我到目前为止尝试了以下代码:
Session session = null;
Query query1 = null;
Query query2 = null;
String[] parts = userId.split("=");
userId = parts[1];
parts = userId.split(" ");
userId = parts[0];
int intIdUser = Integer.parseInt(userId);
try {
session = getSession();
UserCountry userCountry = new UserCountry();
UserLanguage userLanguage = new UserLanguage();
for (String s : user_country) {
userCountry.setUserId(intIdUser);
userCountry.setCountryId(Integer.parseInt(s));
session.getTransaction().begin();
session.persist(userCountry);
session.getTransaction().commit();
}
for (String s : user_language) {
userLanguage.setUserId(intIdUser);
userLanguage.setLanguageId(Integer.parseInt(s));
session.getTransaction().begin();
session.persist(userLanguage);
session.getTransaction().commit();
}
}
catch(Exception e) {
logger.error("Exception while fetching for countryId: "+userId, e);
throw new PlRuntimeException(e.getMessage());
}
finally {
if(session !=null)
session.close();
}
但for(String s:user_country)和for(String s:user_language)循环只保存了user_country和user_language列表中的第一个元素。
如何保存列表中的其他元素?
感谢您的建议。
答案 0 :(得分:1)
您不断更新同一个对象。
您只需在循环内创建UserCountry
和UserLanguage
即可。截至目前,您正在循环外创建。只需将它们移到循环中即可。
例如:
for (String s : user_country) {
UserCountry userCountry = new UserCountry();
userCountry.setUserId(intIdUser);
userCountry.setCountryId(Integer.parseInt(s));
session.getTransaction().begin();
session.persist(userCountry);
session.getTransaction().commit();
}