如何使用JPA将<String>中的多个String元素保存到数据库中?</string>

时间:2014-07-02 14:29:19

标签: java jsp jpa persistence

我到目前为止尝试了以下代码:

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列表中的第一个元素。

如何保存列表中的其他元素?

感谢您的建议。

1 个答案:

答案 0 :(得分:1)

您不断更新同一个对象。

您只需在循环内创建UserCountryUserLanguage即可。截至目前,您正在循环外创建。只需将它们移到循环中即可。

例如:

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();
    }