jpa ne voit pas de table dans la db
-
07-09-2020 - |
Question
Quand j'execute
@NamedQuery(name = "GroupsHasStudent.findByGroupsidGroups", query = "SELECT g DE GroupsHasStudent g OÙ g.groupsHasStudentPK.groupsidGroups = :groupsidGroups"),
de GroupsHasStudent entité, le résultat est généré correcte.Mais d'un autre NativeQuery
getEntityManager().
createNativeQuery(
"SELECT d.idDiscipline, d.name, gy.idGroupsYear, gy.year, g.idGroups "
+ "FROM Discipline d, Groupsyear gy, Groups g, GroupsHasStudent ghs "
+ "WHERE ghs.groupsHasStudentPK.groupsidGroups=2").
getResultList();
lève l'Exception
Internal Exception:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Table 'mydb.groupshasstudent' doesn't exist
En fait, je ne n'ont pas une telle table dans la db, mais le nom correct est *groups_has_student* qui est spécifié dans @Table:
(Mon entité:)
@Entity
@Table(name = "groups_has_student")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "GroupsHasStudent.findAll", query = "SELECT g FROM GroupsHasStudent g"),
@NamedQuery(name = "GroupsHasStudent.findByGroupsidGroups", query = "SELECT g FROM GroupsHasStudent g WHERE g.groupsHasStudentPK.groupsidGroups = :groupsidGroups"),
@NamedQuery(name = "GroupsHasStudent.findByStudentUserslogin", query = "SELECT g FROM GroupsHasStudent g WHERE g.groupsHasStudentPK.studentUserslogin = :studentUserslogin")})
public class GroupsHasStudent implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected GroupsHasStudentPK groupsHasStudentPK;
public GroupsHasStudent() {
}
Et même quand je renomme la table dans mysql groupshasstudent il y a une autre Exception
Unknown column 'ghs.groupsHasStudentPK.studentUserslogin' in 'where clause'
І це сумно..
La solution
Ce n'est pas un natif SQL de la requête, c'est une requête JPQL, par conséquent, vous devez utiliser createQuery()
au lieu de createNativeQuery()
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow