myproton
myproton

Reputation: 31

Failed to get @Query Result

Hello I'm trying to read tables related with ManyToOne , i get the result when i execute the query in Navicat :

enter image description here

but when i try to display data in the front with angular i failed i get only the main tables

enter image description here

this is the query :

//like this
@Query(value = "SELECT\n" +
        "\tnotification.idnotif,\n" +
        "\tnotification.message,\n" +
        "\tnotification.\"state\",\n" +
        "\tnotification.title,\n" +
        "\tnotification.\"customData\",\n" +
        "\tnotification.\"date\",\n" +
        "\tnotification.receiver,\n" +
        "\tnotification.sender,\n" +
        "\tnotification.\"type\",\n" +
        "\thospital.\"name\",\n" +
        "\thospital.\"siretNumber\",\n" +
        "\tusers.firstname,\n" +
        "\tusers.\"isActive\" \n" +
        "FROM\n" +
        "\tnotification\n" +
        "\tINNER JOIN hospital ON notification.receiver = :reciver\n" +
        "\tINNER JOIN users ON notification.sender = :sender",nativeQuery = true)
List<Notification> findNotificationCustomQuery(@Param("reciver") Long reciver,@Param("sender") Long sender);

please what can i do to resolve this problem !

Upvotes: 0

Views: 136

Answers (1)

S. Anushan
S. Anushan

Reputation: 788

You are doing inner join in the native query. Follow as below. Change the return type to Object[] from Notification.

@Query(value = "SELECT\n" +
    "\tnotification.idnotif,\n" +
    "\tnotification.message,\n" +
    "\tnotification.\"state\",\n" +
    "\tnotification.title,\n" +
    "\tnotification.\"customData\",\n" +
    "\tnotification.\"date\",\n" +
    "\tnotification.receiver,\n" +
    "\tnotification.sender,\n" +
    "\tnotification.\"type\",\n" +
    "\thospital.\"name\",\n" +
    "\thospital.\"siretNumber\",\n" +
    "\tusers.firstname,\n" +
    "\tusers.\"isActive\" \n" +
    "FROM\n" +
    "\tnotification\n" +
    "\tINNER JOIN hospital ON notification.receiver = :reciver\n" +
    "\tINNER JOIN users ON notification.sender = 
:sender",nativeQuery = true)
List<Object []> findNotificationCustomQuery(@Param("reciver") 
Long reciver,@Param("sender") Long sender);

Then you have to loop the result as below and get the attributes.

for(Object[] obj : result){
   String is = obj[0];
   //Get like above
}

Upvotes: 1

Related Questions