Hej wszystkim,
próbuje użyć hibernatowej adnotacji Where w relacji ManyToOne. Chciałbym zwrócić tylko te newsy któych User ma pole active na true. Jest to projekt uzywający quarkusa. Może w ogóle nie jest możliwe połączenie tej metody z zapytaniem query w repozutorium ?
@Entity
@Table(name = "user_news")
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class UserNews {
@Id
@GeneratedValue(strategy = IDENTITY)
@EqualsAndHashCode.Include
private Long id;
@Column(updatable = false, insertable = false)
@EqualsAndHashCode.Include
@NaturalId
private UUID uuid;
@Where(clause = "active = true")
@NotNull
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "user_id")
private UserEntity user;
}
@Entity
@Table(name = "users")
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class UserEntity extends PersonEntity {
@NotNull
@Column(unique = true)
@NaturalId
private UUID uuid;
@Column(name = "is_active")
private boolean active;
}
strzelam tym zapytaniem do repo:
@Override
public List<UserNews> getByUserUuid(UUID uuid) {
return find("user.uuid = ?1", uuid).list();
}