У меня есть две организации - пользовательские (с учетной записью и клиентами) и записей, который имеет составной ключ (AccountNumber, SummanThreshold). Я хочу подвести итог, сгруппированная с помощью CustomerID и SUTPHERSHOLD, и составить ее на проекционный интерфейс. Class = "Lang-Java PrettyPrint-Override">
Код: Выделить всё
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name = "USER")
public class UserEntity implements Serializable {
...
@Column(name = "ACCOUNTT_NUMBER", nullable = false, length = 20)
private String accountNumber;
@Column(name = "CUSTOMER_ID", nullable = true, length = 30)
private String customerId;
...
}
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name = "RECORD")
public class RecordEntity implements Serializable {
@EmbeddedId
private RecordEntityPK id;
@Column(name = "AMOUNT", nullable = false)
private BigDecimal amount;
...
}
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@Data
@Embeddable
public class RecordEntityPK implements Serializable {
@Column(name = "ACCOUNTT_NUMBER", nullable = false, length = 20)
private String accountNumber;
@Column(name = "AMOUNT_THRESHOLD", nullable = false)
private Long amountThreshold;
...
}
< /code>
Проекция: < /p>
public interface UserAmountProjection {
String getCustomerId();
Long getAmountThreshold();
BigDecimal getAmount();
}
< /code>
Repository: < /p>
public interface RecordEntityRepository extends CrudRepository {
@Query("""
SELECT
u.customerId AS customerId,
r.id.amountThreshold AS amountThreshold,
SUM(r.amount) AS amount
FROM RecordEntity r
JOIN UserEntity u ON r.id.accountNumber = u.accountNumber
WHERE u.customerId IN ?1
GROUP BY u.customerId, r.id.amountThreshold
ORDER BY u.customerId, r.id.amountThreshold
""")
List findAmountByCustomerID(List CustomerID);
}
Что я делаю неправильно?
Подробнее здесь: https://stackoverflow.com/questions/797 ... ull-values