Я создаю базы данных с использованием классов JPA.
Если у нас есть отношение ManyToOne, мы можем переопределить имя имени ForeignKey следующим образом:
@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "FK_COUNTRY"))
private Country country;
В DB мы получим такой результат:
Хорошо, это хорошо. хороший результат!
НО мне не удастся установить свои собственные имена FK, когда у меня есть @ManyToMany.
Как я могу создать это? Я пробую что-то вроде этого, но это не работает:
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "NEW_TABLE", foreignKey = @ForeignKey(name = "FK_TEST"))
Или что-то вроде этого:
@JoinTable(
name="NEW_TABLE",
joinColumns=
@JoinColumn(name="ID1", referencedColumnName="ID", foreignKey = @ForeignKey(name = "FK_DEV_ID")),
inverseJoinColumns=ID2", referencedColumnName="ID", foreignKey = @ForeignKey(name = "FK_DEV_ZONE"))
)
Или это:
@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name="NEW_TABLE_2",
joinColumns=
@JoinColumn(name="ID1", referencedColumnName="ID",
foreignKey = @ForeignKey(name = "FK_1")
),
inverseJoinColumns=
@JoinColumn(name="ID2", referencedColumnName="ID",
foreignKey = @ForeignKey(name = "FK_2")
),
foreignKey = @ForeignKey(name = "FK_1"),
inverseForeignKey = @ForeignKey(name = "FK_2")
)
private List<MyObject> deviceZones;
Они не работают.
Я использую эту версию jars:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.5.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.2.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.0.6.RELEASE</version>
</dependency>
И моя версия java 1.8