Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Усложненный Many-to-many


Автор: compiler91 6.8.2010, 12:02
Добрый день!
Есть задача: произвести отображение между 
http://ipicture.ru/ и 
Код

class A{
    Map<SomeEnum, B> foo;
}


где ключ в мепе соответствует role в a_ has _b ?
Заранее благодарен.

Автор: MisterCleric 6.8.2010, 14:10
Привет. Ану попробуй вот так:
Код

public class A {

    @ManyToMany
    @org.hibernate.annotations.MapKeyManyToMany(
            joinColumns = @JoinColumn(name = "ROLE")
    )
    @JoinTable(
            name = "a_ has _b",
            joinColumns = @JoinColumn(name = "A_ID"),
            inverseJoinColumns = @JoinColumn(name = "B_ID")
    )
    private Map<String, B> bs;


Автор: compiler91 6.8.2010, 14:50
Цитата(MisterCleric @ 6.8.2010,  13:10)
Привет. Ану попробуй вот так:

Увы, не прошло(

Код

org.hibernate.MappingException: Could not determine type for: java.util.Map, at table: A, for columns: [org.hibernate.mapping.Column(bs)]

Автор: MisterCleric 6.8.2010, 15:01
Ага, стоп.
Попробуй это
Код

@MapKey(name="ROLE")

вместо
Код

 @org.hibernate.annotations.MapKeyManyToMany(
            joinColumns = @JoinColumn(name = "ROLE")
    )


Вобщем надо гуглить и книжки читать.
У меня просто проблема тернарного соединения, что вполне возможно тебе и не поможет.
У меня выходи и ключ и значение мэпы сущности. Эта мепа находиться в третьей сущности. И тут же я указываю таблицу, которая как содержит это тернарное соединение

Автор: compiler91 6.8.2010, 15:07
Тот же эксептион(

В любом случае, спасибо, земляк, за помощь. Буду дальше гуглить и искать книжки)

Автор: compiler91 6.8.2010, 16:27
вот решение c xml (подсказали на стековерфлоу)
Код

<typedef name="role" class="org.hibernate.type.EnumType">
        <param name="enumClass">com.domain.PrepodRole</param>
        <param name="type">12</param>
    </typedef>

    <class name="com.domain.A" table="a">
        <id name="id" column="a_id" type="long" unsaved-value="-1">
            <generator class="native"/>
        </id>
        <map name="foo" table="a_has_b">
            <key column="a_id"/>
            <map-key type="role" length="20" column="role"/>
            <many-to-many class="com.domain.B" column="b_id"/>
        </map>
    </class>

    <class name="com.domain.B">
        <id name="id" column="b_id" type="long" unsaved-value="-1">
            <generator class="native"/>
        </id>

    </class>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)