J'ai deux tables avec le schéma comme suit:Unidirectionnel JPA OneToMany Mapping - ORA-01722: numéro invalide
Tableau 1
table1_id (pk) (entier)
Nom
Tableau2
table2_id (pk) (Chaîne)
table1_id (pk) (entier)
Nom
Mon code ressemble à ceci
@Entity
@Table(name = "Table2")
class Table2 {
@Id
@Column(name = "table2_id")
private String id;
@Column(name="name")
private String name;
@OneToMany
@JoinColumn (name="table1_id")
private Set<Table1> table1Set = new HashSet<>();
//setters and getters
}
@Entity
@Table(name = "Table1")
class Table1 {
@Id
@Column(name = "table1_id")
private int id;
@Column(name="name")
private String name;
//setters and getters
}
Maintenant, quand je la recherche: Table2Repository.findById("One")
:
je reçois ci-dessous erreur:
Hibernate: select table2.id as table2_id_1_, table2.name as name2_1_ from table2 table20_
Hibernate: select table10_.table1_id as table1_id1_1_0_, table1_.table1_id as table1_id1_0_0_, table10_.table1_id as table1_id1_0_1_, table10_.name as name2_0_1_ from table1 table10_ where table10_.table1_id=?
2017-07-25 12:53:11.352 WARN 11572 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1722, SQLState: 42000
2017-07-25 12:53:11.352 ERROR 11572 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-01722: invalid number
Il semble qu'il y ait une discordance. Il semble utiliser String "table2_id" pour interroger Table1, où il devrait utiliser "table1_id"
Veuillez aider!
Il y a un conflit de noms dans votre application: '@JoinColumn (name = "table1_id") 'sur' Table2.table1Set' vs '@Id @Column (name =" table1_id ")' sur 'Table1.id'. Notez que la colonne de jointure va dans Table1, ** pas ** 'Table2'. – crizzis
@crizzis, je me suis rendu compte que la colonne de jointure devrait être dans le «beaucoup» la table latérale c.-à-d. Tableau 1 . Cependant, ce schéma de base de données est ancien et la modification peut ne pas être facile. Est-il de toute façon pour le faire fonctionner sans déplacer la colonne de jointure à Table1? Merci. – Surbhi
Je ne pense pas que je suis. Comment pouvez-vous avoir une association * un-à-plusieurs * avec la colonne de jointure du côté * un *? Quand il y a plus d'un 'Table1' associé à' Table2', où prévoyez-vous stocker leurs identifiants? – crizzis