Merge branch 'Branch_transactionModelJhipster' into ver4
This commit is contained in:
@@ -48,7 +48,7 @@ public class Event implements Serializable {
|
||||
private Set<Registration> registrations = new HashSet<>();
|
||||
|
||||
@OneToMany(fetch = FetchType.LAZY, mappedBy = "event")
|
||||
@JsonIgnoreProperties(value = { "event", "transactionItem" }, allowSetters = true)
|
||||
@JsonIgnoreProperties(value = { "event", "transactionItems" }, allowSetters = true)
|
||||
private Set<Transaction> transactions = new HashSet<>();
|
||||
|
||||
// jhipster-needle-entity-add-field - JHipster will add fields here
|
||||
|
||||
@@ -5,6 +5,8 @@ import com.sasiedzi.event.domain.enumeration.TransactionType;
|
||||
import jakarta.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* A Transaction.
|
||||
@@ -36,9 +38,9 @@ public class Transaction implements Serializable {
|
||||
@JsonIgnoreProperties(value = { "registrations", "transactions" }, allowSetters = true)
|
||||
private Event event;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "userAccounts", "transactions" }, allowSetters = true)
|
||||
private TransactionItem transactionItem;
|
||||
@OneToMany(fetch = FetchType.LAZY, mappedBy = "transaction")
|
||||
@JsonIgnoreProperties(value = { "userAccount", "transaction", "event" }, allowSetters = true)
|
||||
private Set<TransactionItem> transactionItems = new HashSet<>();
|
||||
|
||||
// jhipster-needle-entity-add-field - JHipster will add fields here
|
||||
|
||||
@@ -107,16 +109,34 @@ public class Transaction implements Serializable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public TransactionItem getTransactionItem() {
|
||||
return this.transactionItem;
|
||||
public Set<TransactionItem> getTransactionItems() {
|
||||
return this.transactionItems;
|
||||
}
|
||||
|
||||
public void setTransactionItem(TransactionItem transactionItem) {
|
||||
this.transactionItem = transactionItem;
|
||||
public void setTransactionItems(Set<TransactionItem> transactionItems) {
|
||||
if (this.transactionItems != null) {
|
||||
this.transactionItems.forEach(i -> i.setTransaction(null));
|
||||
}
|
||||
if (transactionItems != null) {
|
||||
transactionItems.forEach(i -> i.setTransaction(this));
|
||||
}
|
||||
this.transactionItems = transactionItems;
|
||||
}
|
||||
|
||||
public Transaction transactionItem(TransactionItem transactionItem) {
|
||||
this.setTransactionItem(transactionItem);
|
||||
public Transaction transactionItems(Set<TransactionItem> transactionItems) {
|
||||
this.setTransactionItems(transactionItems);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Transaction addTransactionItem(TransactionItem transactionItem) {
|
||||
this.transactionItems.add(transactionItem);
|
||||
transactionItem.setTransaction(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Transaction removeTransactionItem(TransactionItem transactionItem) {
|
||||
this.transactionItems.remove(transactionItem);
|
||||
transactionItem.setTransaction(null);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,9 +4,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import jakarta.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* A TransactionItem.
|
||||
@@ -27,24 +24,20 @@ public class TransactionItem implements Serializable {
|
||||
@Column(name = "amount", precision = 21, scale = 2)
|
||||
private BigDecimal amount;
|
||||
|
||||
@Column(name = "date")
|
||||
private LocalDate date;
|
||||
|
||||
@Column(name = "comment")
|
||||
private String comment;
|
||||
|
||||
@ManyToMany(fetch = FetchType.LAZY)
|
||||
@JoinTable(
|
||||
name = "rel_transaction_item__user_account",
|
||||
joinColumns = @JoinColumn(name = "transaction_item_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "user_account_id")
|
||||
)
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "users", "transactionItems" }, allowSetters = true)
|
||||
private Set<UserAccount> userAccounts = new HashSet<>();
|
||||
private UserAccount userAccount;
|
||||
|
||||
@OneToMany(fetch = FetchType.LAZY, mappedBy = "transactionItem")
|
||||
@JsonIgnoreProperties(value = { "event", "transactionItem" }, allowSetters = true)
|
||||
private Set<Transaction> transactions = new HashSet<>();
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "event", "transactionItems" }, allowSetters = true)
|
||||
private Transaction transaction;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "registrations", "transactions" }, allowSetters = true)
|
||||
private Event event;
|
||||
|
||||
// jhipster-needle-entity-add-field - JHipster will add fields here
|
||||
|
||||
@@ -74,19 +67,6 @@ public class TransactionItem implements Serializable {
|
||||
this.amount = amount;
|
||||
}
|
||||
|
||||
public LocalDate getDate() {
|
||||
return this.date;
|
||||
}
|
||||
|
||||
public TransactionItem date(LocalDate date) {
|
||||
this.setDate(date);
|
||||
return this;
|
||||
}
|
||||
|
||||
public void setDate(LocalDate date) {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
public String getComment() {
|
||||
return this.comment;
|
||||
}
|
||||
@@ -100,57 +80,42 @@ public class TransactionItem implements Serializable {
|
||||
this.comment = comment;
|
||||
}
|
||||
|
||||
public Set<UserAccount> getUserAccounts() {
|
||||
return this.userAccounts;
|
||||
public UserAccount getUserAccount() {
|
||||
return this.userAccount;
|
||||
}
|
||||
|
||||
public void setUserAccounts(Set<UserAccount> userAccounts) {
|
||||
this.userAccounts = userAccounts;
|
||||
public void setUserAccount(UserAccount userAccount) {
|
||||
this.userAccount = userAccount;
|
||||
}
|
||||
|
||||
public TransactionItem userAccounts(Set<UserAccount> userAccounts) {
|
||||
this.setUserAccounts(userAccounts);
|
||||
public TransactionItem userAccount(UserAccount userAccount) {
|
||||
this.setUserAccount(userAccount);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TransactionItem addUserAccount(UserAccount userAccount) {
|
||||
this.userAccounts.add(userAccount);
|
||||
public Transaction getTransaction() {
|
||||
return this.transaction;
|
||||
}
|
||||
|
||||
public void setTransaction(Transaction transaction) {
|
||||
this.transaction = transaction;
|
||||
}
|
||||
|
||||
public TransactionItem transaction(Transaction transaction) {
|
||||
this.setTransaction(transaction);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TransactionItem removeUserAccount(UserAccount userAccount) {
|
||||
this.userAccounts.remove(userAccount);
|
||||
return this;
|
||||
public Event getEvent() {
|
||||
return this.event;
|
||||
}
|
||||
|
||||
public Set<Transaction> getTransactions() {
|
||||
return this.transactions;
|
||||
public void setEvent(Event event) {
|
||||
this.event = event;
|
||||
}
|
||||
|
||||
public void setTransactions(Set<Transaction> transactions) {
|
||||
if (this.transactions != null) {
|
||||
this.transactions.forEach(i -> i.setTransactionItem(null));
|
||||
}
|
||||
if (transactions != null) {
|
||||
transactions.forEach(i -> i.setTransactionItem(this));
|
||||
}
|
||||
this.transactions = transactions;
|
||||
}
|
||||
|
||||
public TransactionItem transactions(Set<Transaction> transactions) {
|
||||
this.setTransactions(transactions);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TransactionItem addTransaction(Transaction transaction) {
|
||||
this.transactions.add(transaction);
|
||||
transaction.setTransactionItem(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
public TransactionItem removeTransaction(Transaction transaction) {
|
||||
this.transactions.remove(transaction);
|
||||
transaction.setTransactionItem(null);
|
||||
public TransactionItem event(Event event) {
|
||||
this.setEvent(event);
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -179,7 +144,6 @@ public class TransactionItem implements Serializable {
|
||||
return "TransactionItem{" +
|
||||
"id=" + getId() +
|
||||
", amount=" + getAmount() +
|
||||
", date='" + getDate() + "'" +
|
||||
", comment='" + getComment() + "'" +
|
||||
"}";
|
||||
}
|
||||
|
||||
@@ -33,8 +33,8 @@ public class UserAccount implements Serializable {
|
||||
)
|
||||
private Set<User> users = new HashSet<>();
|
||||
|
||||
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "userAccounts")
|
||||
@JsonIgnoreProperties(value = { "userAccounts", "transactions" }, allowSetters = true)
|
||||
@OneToMany(fetch = FetchType.LAZY, mappedBy = "userAccount")
|
||||
@JsonIgnoreProperties(value = { "userAccount", "transaction", "event" }, allowSetters = true)
|
||||
private Set<TransactionItem> transactionItems = new HashSet<>();
|
||||
|
||||
// jhipster-needle-entity-add-field - JHipster will add fields here
|
||||
@@ -94,10 +94,10 @@ public class UserAccount implements Serializable {
|
||||
|
||||
public void setTransactionItems(Set<TransactionItem> transactionItems) {
|
||||
if (this.transactionItems != null) {
|
||||
this.transactionItems.forEach(i -> i.removeUserAccount(this));
|
||||
this.transactionItems.forEach(i -> i.setUserAccount(null));
|
||||
}
|
||||
if (transactionItems != null) {
|
||||
transactionItems.forEach(i -> i.addUserAccount(this));
|
||||
transactionItems.forEach(i -> i.setUserAccount(this));
|
||||
}
|
||||
this.transactionItems = transactionItems;
|
||||
}
|
||||
@@ -109,13 +109,13 @@ public class UserAccount implements Serializable {
|
||||
|
||||
public UserAccount addTransactionItem(TransactionItem transactionItem) {
|
||||
this.transactionItems.add(transactionItem);
|
||||
transactionItem.getUserAccounts().add(this);
|
||||
transactionItem.setUserAccount(this);
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserAccount removeTransactionItem(TransactionItem transactionItem) {
|
||||
this.transactionItems.remove(transactionItem);
|
||||
transactionItem.getUserAccounts().remove(this);
|
||||
transactionItem.setUserAccount(null);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,25 +6,37 @@ import java.util.Optional;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.*;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* Spring Data JPA repository for the TransactionItem entity.
|
||||
*
|
||||
* When extending this class, extend TransactionItemRepositoryWithBagRelationships too.
|
||||
* For more information refer to https://github.com/jhipster/generator-jhipster/issues/17990.
|
||||
*/
|
||||
@Repository
|
||||
public interface TransactionItemRepository extends TransactionItemRepositoryWithBagRelationships, JpaRepository<TransactionItem, Long> {
|
||||
public interface TransactionItemRepository extends JpaRepository<TransactionItem, Long> {
|
||||
default Optional<TransactionItem> findOneWithEagerRelationships(Long id) {
|
||||
return this.fetchBagRelationships(this.findById(id));
|
||||
return this.findOneWithToOneRelationships(id);
|
||||
}
|
||||
|
||||
default List<TransactionItem> findAllWithEagerRelationships() {
|
||||
return this.fetchBagRelationships(this.findAll());
|
||||
return this.findAllWithToOneRelationships();
|
||||
}
|
||||
|
||||
default Page<TransactionItem> findAllWithEagerRelationships(Pageable pageable) {
|
||||
return this.fetchBagRelationships(this.findAll(pageable));
|
||||
return this.findAllWithToOneRelationships(pageable);
|
||||
}
|
||||
|
||||
@Query(
|
||||
value = "select transactionItem from TransactionItem transactionItem left join fetch transactionItem.event",
|
||||
countQuery = "select count(transactionItem) from TransactionItem transactionItem"
|
||||
)
|
||||
Page<TransactionItem> findAllWithToOneRelationships(Pageable pageable);
|
||||
|
||||
@Query("select transactionItem from TransactionItem transactionItem left join fetch transactionItem.event")
|
||||
List<TransactionItem> findAllWithToOneRelationships();
|
||||
|
||||
@Query(
|
||||
"select transactionItem from TransactionItem transactionItem left join fetch transactionItem.event where transactionItem.id =:id"
|
||||
)
|
||||
Optional<TransactionItem> findOneWithToOneRelationships(@Param("id") Long id);
|
||||
}
|
||||
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
package com.sasiedzi.event.repository;
|
||||
|
||||
import com.sasiedzi.event.domain.TransactionItem;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import org.springframework.data.domain.Page;
|
||||
|
||||
public interface TransactionItemRepositoryWithBagRelationships {
|
||||
Optional<TransactionItem> fetchBagRelationships(Optional<TransactionItem> transactionItem);
|
||||
|
||||
List<TransactionItem> fetchBagRelationships(List<TransactionItem> transactionItems);
|
||||
|
||||
Page<TransactionItem> fetchBagRelationships(Page<TransactionItem> transactionItems);
|
||||
}
|
||||
-67
@@ -1,67 +0,0 @@
|
||||
package com.sasiedzi.event.repository;
|
||||
|
||||
import com.sasiedzi.event.domain.TransactionItem;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.PersistenceContext;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.IntStream;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
|
||||
/**
|
||||
* Utility repository to load bag relationships based on https://vladmihalcea.com/hibernate-multiplebagfetchexception/
|
||||
*/
|
||||
public class TransactionItemRepositoryWithBagRelationshipsImpl implements TransactionItemRepositoryWithBagRelationships {
|
||||
|
||||
private static final String ID_PARAMETER = "id";
|
||||
private static final String TRANSACTIONITEMS_PARAMETER = "transactionItems";
|
||||
|
||||
@PersistenceContext
|
||||
private EntityManager entityManager;
|
||||
|
||||
@Override
|
||||
public Optional<TransactionItem> fetchBagRelationships(Optional<TransactionItem> transactionItem) {
|
||||
return transactionItem.map(this::fetchUserAccounts);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<TransactionItem> fetchBagRelationships(Page<TransactionItem> transactionItems) {
|
||||
return new PageImpl<>(
|
||||
fetchBagRelationships(transactionItems.getContent()),
|
||||
transactionItems.getPageable(),
|
||||
transactionItems.getTotalElements()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TransactionItem> fetchBagRelationships(List<TransactionItem> transactionItems) {
|
||||
return Optional.of(transactionItems).map(this::fetchUserAccounts).orElse(Collections.emptyList());
|
||||
}
|
||||
|
||||
TransactionItem fetchUserAccounts(TransactionItem result) {
|
||||
return entityManager
|
||||
.createQuery(
|
||||
"select transactionItem from TransactionItem transactionItem left join fetch transactionItem.userAccounts where transactionItem.id = :id",
|
||||
TransactionItem.class
|
||||
)
|
||||
.setParameter(ID_PARAMETER, result.getId())
|
||||
.getSingleResult();
|
||||
}
|
||||
|
||||
List<TransactionItem> fetchUserAccounts(List<TransactionItem> transactionItems) {
|
||||
HashMap<Object, Integer> order = new HashMap<>();
|
||||
IntStream.range(0, transactionItems.size()).forEach(index -> order.put(transactionItems.get(index).getId(), index));
|
||||
List<TransactionItem> result = entityManager
|
||||
.createQuery(
|
||||
"select transactionItem from TransactionItem transactionItem left join fetch transactionItem.userAccounts where transactionItem in :transactionItems",
|
||||
TransactionItem.class
|
||||
)
|
||||
.setParameter(TRANSACTIONITEMS_PARAMETER, transactionItems)
|
||||
.getResultList();
|
||||
Collections.sort(result, (o1, o2) -> Integer.compare(order.get(o1.getId()), order.get(o2.getId())));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -124,9 +124,6 @@ public class TransactionItemResource {
|
||||
if (transactionItem.getAmount() != null) {
|
||||
existingTransactionItem.setAmount(transactionItem.getAmount());
|
||||
}
|
||||
if (transactionItem.getDate() != null) {
|
||||
existingTransactionItem.setDate(transactionItem.getDate());
|
||||
}
|
||||
if (transactionItem.getComment() != null) {
|
||||
existingTransactionItem.setComment(transactionItem.getComment());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user