Прежде всего: я знаю, что здесь есть много похожих вопросов, но я прочитал большинство из них, и все, кажется, обращают немного разные проблемы, и никто не получил удовлетворительного ответа ... Поэтому я все еще надеюсь, что кто-то знает, как справиться со своей проблемой ...ManyToMany на части составного ключа
Просто сказал, что у меня есть сущность, которая имеет составной ключ, и я хочу присоединиться к коллекции других объектов на части этого составного ключа. К сожалению, hibernate заставляет меня включить в составную часть другую часть составного ключа, что приводит к бесполезным большим таблицам соединений (> 20 м строк для 250 различных наборов значений ...). Поэтому я хочу исключить ненужную часть ключа из соединения.
Entity зарисовки:
public class A {
@Id
int i_am_A;
@OneToMany
@JoinColumn(referencedColumnName = "i_am_A",name="A_i_am_A")
Set<AB> abs;
}
public class B {
@Id
int i_am_B;
@Id
int myLanguage;
...
}
public class AB {
@ManyToOne
@Id
A myA;
@Id
int myB
@ManyToMany
@JoinColum(name="myB")
Collection<B> bs;
@Basic
String value
}
Так что это в основном A
иметь отношения с B
, который может иметь определенное значение, которое хранится в AB
. Одна аномалия заключается в том, что B
существует на нескольких языках, и AB
должен указывать на все из них.
Кто-нибудь знает, как сделать это с Hibernate (без возможности реконструирования Db ... если возможно. Я знаю, что могут быть лучшие проекты, но сейчас в этой схеме есть несколько строк ...)?
Я думаю, что проблема в вашей модели, она не должна быть '<- AB -> B <-C', с' C' быть множественные traslations из 'B'? – SJuan76
@ SJuan76 Я боялся, что это единственное возможное решение ... – gapvision