0

I have two models with a OneToMany and a ManyToOne relationship.

GroupChat:

@Entity
@Getter @Setter @NoArgsConstructor
@Table(name = "GroupChat")
@ToString()
public class GroupChat extends RepresentationModel<GroupChat> {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @Column(name = "uniqueId", nullable = false, unique=true)
    private UUID uniqueId;

    @Column(name = "expirationDate")
    private Date expirationDate;

    @Column(name = "analysedDate")
    private Date analysedDate;

    @Column(name = "creationDate")
    private Date creationDate;

    @Column(name = "totalParticipants", nullable = false)
    private int totalParticipants;

    @Column(name = "totalCurrentParticipants", nullable = false)
    private int totalCurrentParticipants;

    @Column(name = "totalMessages", nullable = false)
    private int totalMessages;

    @Column(name = "totalSentVideos", nullable = false)
    private int totalSentVideos;

    @Column(name = "totalSentPhotos", nullable = false)
    private int totalSentPhotos;

    @Column(name = "totalSentGifs", nullable = false)
    private int totalSentGifs;

    @Column(name = "totalSentAudioFiles", nullable = false)
    private int totalSentAudioFiles;

    @Column(name = "totalSentReactions", nullable = false)
    private int totalSentReactions;

    @Column(name = "groupChatName")
    private String groupChatName;

    @ToString.Exclude
    @Column(name = "participants")
    @OneToMany(mappedBy="groupChatId", fetch = FetchType.LAZY,
            cascade = CascadeType.ALL)
    @JsonIgnore
    private List<MessengerUser> participants;

}

GroupChat Repo:

public interface GroupChatRepository extends JpaRepository<GroupChat, Long> {

    GroupChat findByUniqueId(UUID uniqueId);
}

MessengerUser:

@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name = "MessengerUser")
@ToString
public class MessengerUser extends RepresentationModel<MessengerUser> {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "profilePic")
    private int profilePic;

    @Column(name = "numberOfMessagesSent")
    private int numberOfMessagesSent;

    @Column(name = "numberOfPhotosSent")
    private int numberOfPhotosSent;

    @Column(name = "numberOfVideosSent")
    private int numberOfVideosSent;

    @Column(name = "numberOfGifsSent")
    private int numberOfGifsSent;

    @Column(name = "numberOfAudioFilesSent")
    private int numberOfAudioFilesSent;

    @Column(name = "numberOfReceivedReactions")
    private int numberOfReceivedReactions;

    @Column(name = "numberOfSentReactions")
    private int numberOfSentReactions;

    @Column(name = "userReactionsReceived")
    private String userReactionsReceived;

    @Column(name = "userReactionsSent")
    private String userReactionsSent;

    @Column(name = "addedToChat")
    private String addedToChat;

    @Column(name = "removedFromChat")
    private String removedFromChat;

    @Column(name = "firstRecordOfActivity")
    private Date firstRecordOfActivity;

    @Column(name = "lastRecordOfActivity")
    private Date lastRecordOfActivity;

    @Column(name = "userActiveStatus")
    private Boolean userActiveStatus;

    @Column(name = "firstMessage")
    private String firstMessage;

    @Column(name = "firstMessageDate")
    private Date firstMessageDate;

    @Column(name = "message")
    private int message;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="group_chat_id", nullable=false)
    private GroupChat groupChatId;

}

MessengerUser Repo

public interface MessengerUserRepository extends JpaRepository<MessengerUser, Long> {

    List<MessengerUser> findByGroupChatId(Long groupChatId);
}
GroupChat g = groupChatRepository.findByUniqueId(uniqueId);
long l = 1;
Optional<MessengerUser> user = messengerUserRepository.findById(l); // This works
messengerUserRepository.findByGroupChatId(g.getId()) // Cant query by groupChat id

Error:

java.lang.IllegalArgumentException: Argument [1] of type [java.lang.Long] did not match parameter type [com.example.demo.models.GroupChat (n/a)]
.
.
.
at jdk.proxy2/jdk.proxy2.$Proxy118.findByGroupChatId(Unknown Source) ~[na:na]

When I query for an individual MessengerUser by the MessengerUser id I see the GroupChat that is associated with the Messenger User. So the data is there. I'm just not sure why I can't query by the associated groupChat id on the MessengerUser ?

MSmith
  • 39
  • 1
  • 7

0 Answers0