Как разбить данные таблицы на два набора на основе значения столбца с помощью отображений Hibnernate? - PullRequest
1 голос
/ 26 ноября 2009

Предположим, есть три таблицы:

Table A (ID, NAME)
Table B (ID, NAME)
Table A-B (A_ID, B_ID, Boolean_Property)

и таблицы A и B моделируются классами A и B следующим образом:

public class A {
    private long id;
    private String name;

    // All the B's that belong to A where the boolean property is True
    Set<B> trueBSet;

    // All the B's that belong to A where the boolean property is False
    Set<B> falseBSet;
}

public class B {
    private long id;
    private String name;
}

Как бы я смоделировал это, используя Hibernate? Я хотел бы иметь возможность сделать следующее, но похоже, что значения столбцов дискриминатора не существует для заданных атрибутов:

<class name="A" table="A">
    <id name="id" column="ID">
        <generator class="native" />
    </id>

    <property name="name" column="NAME" />

    <set name="trueB" table="A-B">
        <key column="A_ID"/>
        <many-to-many column="B_ID" class="B"/>
        <discriminator column="Boolean_Property" value="True" />
    </set>

    <set name="falseB" table="A-B">
        <key column="A_ID"/>
        <many-to-many column="B_ID" class="B"/>
        <discriminator column="Boolean_Property" value="False" />
    </set>
</class>

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

как @ ChssPly76 сказал, что это дубликат Несколько наборов @ManyToMany из одной таблицы объединения

В предлагаемых там решениях предлагается использовать представление в качестве Join-Column и обычный SQL для операций CRUD.

Этот ответ помечен вики-сообществом, поэтому, если кто-то еще захочет, чтобы этот вопрос вышел из раздела «без ответа», он может свободно проголосовать за него.

0 голосов
/ 26 ноября 2009

Я думаю, вы можете применить предложение where в set tag. Hibernate документ состояние, как показано в следующей ссылке http://docs.jboss.org/hibernate/core/3.3/reference/en/html/collections.html

где (необязательно): указывает произвольное условие SQL WHERE, которое используется при извлечении или удалении коллекции. Это полезно, если коллекция должна содержать только подмножество доступных данных.

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