У меня есть две сущности
@Entity
@Table(name = SIGNAL")
public class TradingSignal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false, unique = true)
private int id;
@Column(name = "SIGNAL_ID")
private int signalId;
@Column(name = "TICKER", length = 6)
private String ticker;
@OneToMany(cascade = CascadeType.ALL)
private Set<TsUsed> tsUsedSet;
}
и
@Entity
@Table(name = "TS_USED")
public class TsUsed {
@Id
@Column(name = "FILTER_ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private int filterId;
@Column(name = "USER_ID_LSB")
private long userIdLsb;
@Column(name = "USER_ID_MSB")
private long userIdMsb;
@Column(name = "VISIBLE")
private boolean visible;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "ID", nullable = false)
private TradingSignal tradingSignal;
}
Как мне найти все TradingSignal
s, где TsUsed
. userIdLsb
и TsUsed
. userIdMsb
не существует в tsUsedSet
?
Невозможно создать действительный предикат.
Этот код не работает для меня
Join<TradingSignal, TsUsed> tsUsed = getTsUsedJoin(root);
Predicate predicateUserIdLsb = builder.equal(tsUsed.get("userIdLsb"), userId.getLeastSignificantBits());
Predicate predicateUserIdMsb = builder.equal(tsUsed.get("userIdMsb"), userId.getMostSignificantBits());
Predicate predicateInvisible = builder.isFalse(tsUsed.get("visible"));
Predicate notInvisibleForUser = builder.and(predicateUserIdLsb, predicateUserIdMsb, predicateInvisible).not();