Federdaten JPA -Schnittstelle Projektion gibt Nullwerte zurückJava

Java-Forum
Anonymous
 Federdaten JPA -Schnittstelle Projektion gibt Nullwerte zurück

Post by Anonymous »

Ich versuche, aggregierte Daten mithilfe der Springdaten -JPA -Projektion
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);
}
Außerdem habe ich versucht, die Abfrage so zu ändern, dass einfache Werte wie String und BigDecimal zurückgegeben werden. Es hat also funktioniert. Es sieht also so aus, als ob das Problem mit dem Projektionszuordnen zusammenhängt.
Was mache ich falsch?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post