Sto creando database utilizzando le classi JPA.come impostare il nome ForeignKey quando ho @ManyToMany
Se abbiamo ManyToOne relazione, possiamo ignorare ForeignKey nome nome come questo:
@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "FK_COUNTRY"))
private Country country;
Nel DB, avremo un risultato del genere:
Ok, questo è simpatico. buon risultato!
MA Non riuscirò a impostare i miei nomi FK quando ho @ManyToMany.
Come posso creare questo? Provo qualcosa di simile, ma non funziona:
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = "NEW_TABLE", foreignKey = @ForeignKey(name = "FK_TEST"))
O qualcosa di simile:
@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"))
)
O questo:
@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;
Essi non funziona.
Io uso questa versione di vasi:
<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>
e la mia versione Java 1.8
hai provato ad aggiungere anche l'attributo inverseForeignKey? – Giovanni
@Giovanni Sì, ho aggiornato la mia domanda. Ho scritto questo (se è vero) nella mia domanda. – grep
Quale versione di Hibernate stai usando? Ricordo di aver visto alcuni bug in quest'area: https://hibernate.atlassian.net/browse/HHH-8783 per esempio. La versione –