Почему это отображение приводит к попыткам обновления? - PullRequest
2 голосов
/ 26 апреля 2010

Это настоящая новичок в спящем режиме. У меня проблема с отображениями для двух таблиц. Первая таблица - это MARKET, а вторая - MARKET_MENU_BRANCH, которая содержит список строк для каждой строки MARKET. Когда я сохраняю новый Market, я хочу, чтобы он вставил строки MARKET и MARKET_MENU_BRANCH, но на самом деле он, кажется, вставляет MARKET и затем пытается обновить строки MARKET_MENU_BRANCH, которые не существуют, что вызывает ошибку. Что я делаю не так? Мои таблицы выглядят так:

mysql> describe MARKET;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   | PRI | NULL    |       | 
| name  | varchar(100) | YES  |     | NULL    |       | 
+-------+--------------+------+-----+---------+-------+

mysql> describe MARKET_MENU_BRANCH;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| marketId | int(11)      | NO   | PRI | 0       |       | 
| sequence | int(11)      | NO   | PRI | 0       |       | 
| name     | varchar(100) | YES  |     | NULL    |       | 
+----------+--------------+------+-----+---------+-------+

Мои доменные объекты выглядят так:

public class Market implements Serializable {
    private int id;
    private String name;
    private List<MarketMenuBranch> marketMenuBranches;
    // accessors / mutators etc...

public class MarketMenuBranch implements Serializable {
    private MarketMenuBranchId id;
    private String name;
    // accessors / mutators etc...

public class MarketMenuBranchId implements Serializable {
    private int marketId;
    private int sequence;
   // accessors / mutators etc...

и мои отображения выглядят так:

<class name="Market" table="MARKET">
    <id name="id"/>
    <property name="name"/>
    <list name="marketMenuBranches">
        <key column="marketId"/>
        <list-index column="sequence"/>
        <one-to-many class="MarketMenuBranch"/>
    </list>
</class>

и

<class name="MarketMenuBranch" table="MARKET_MENU_BRANCH">
    <composite-id name="id" class="MarketMenuBranchId">
        <key-property name="marketId"/>
        <key-property name="sequence"/>
    </composite-id>
    <property name="name"/>
</class>

1 Ответ

4 голосов
/ 26 апреля 2010

У вас есть отношения между родителями и детьми, вы найдете информацию на этой странице документа .

Обычно вам нужно сохранить (...) дочерний элемент или использовать атрибут каскада.

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