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 ?