Внешние ключи при вставке с помощью Struts2 / Hibernate - PullRequest
0 голосов
/ 04 октября 2011

Я новый пользователь Struts 2 с гибернацией.У меня есть 2 таблицы: "Клиент" и "Координаты" (французское слово). В моей таблице "Клиент" у меня есть FK с именем "ordonnees_id ", который ссылается на поле" id "из таблицы" Координаты ". Я создал форму вставки, подобную этой:

Файл add.jsp

<s:form method="post" action="create">
    <s:textfield cssClass="" label="Nom" name="client.nom" />
    <s:textfield cssClass="" label="Prénom" name="client.prenom" />
    ....
    <s:textfield cssClass="" label="Email" name="coordonnees.email" />
    <s:textfield cssClass="" label="Adresse" name="coordonnees.adresse" />
    <s:submit value="Insert" />
</s:form>

Файл ClientAction.java

private Client client;
private ClientManager clientManager;
private Coordonnees coordonnees;
private CoordonneesManager coordonneesManager;

public String create() {

    client = getClient();
    coordonnees = getCoordonnees();

    try {
        clientManager.insert(client);
        coordonneesManager.insert(coordonnees);
        return SUCCESS;
    } catch (Exception e) {
        e.printStackTrace();
        return ERROR;
    }
}

Файл CoordonneesManager.java

public boolean insert(Coordonnees coordonnees) {

    session = MyHibernateUtil.currentSession();
    tx = session.beginTransaction();
    try {
        session.save(coordonnees);
        log.info("Enregistrement de : " + getClass());
        return true;
    } catch (Exception e) {
        log.error(e);
        return false;
    } finally {
        tx.commit();
        MyHibernateUtil.closeSession();
    }
}

В моем клиенте.hbm.xml file:

<many-to-one class="model.Coordonnees" fetch="select" name="coordonnees">
    <column name="coordoonnees_id"/>
</many-to-one>

Вот моя проблема: когда я отправляю свою форму, я хотел бы вставить данные в таблицу Client (конечно ...), в таблицу "Coordonnees" (это работаетхорошо), и я хотел бы получить "id", который я только что создал из таблицы Coordonnees и вставить его в мою таблицу Client (поле "correonnees_id" => мой FK).

Есть ли простой вариант в struts2сделать это?Конечно, я могу выполнить запрос на выборку для моей последней вставки в таблицу Coordonnees, получить идентификатор и обновить мою таблицу Client ... Но это не главное, я бы хотел, чтобы Struts сделал это для меня (если это возможно, конечно).

Спасибо всем за помощь:)

1 Ответ

0 голосов
/ 04 октября 2011

Я считаю, что сохранение этих двух объектов должно происходить в одной транзакции. Сначала вы должны сохранить родительский объект, то есть coordonnees, затем прошить его, чтобы получить первичный ключ, а затем установить отношение в дочернем объекте. После этого упорствуете ребенок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...