zu erhalten. Ich habe zwei Entitäten - Benutzerentzündung (mit AccountNumber und CustomerID) und Recordentity, die über einen zusammengesetzten Schlüssel (AccountNumber, STANDPREIDSHOLD) verfügt. Ich möchte die nach CustomerID und STANDThreshold gruppierte Menge zusammenfassen und einer Projektionsschnittstelle zuordnen. class = "Lang-Java PrettyPrint-Override">
Code: Select all
@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>
Projektion: < /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);
}
Was mache ich falsch?