いくつかのモデル クラスのコードを、フィールド アクセサーからプロパティ アクセサーに変更しました。また、順序は重要ではないため、List から Set に変更しました。以下は私のエンティティクラスです。
@Entity
@Table(name = "TPYP_GAME")
public class Game extends AbstractGeneratedIdEntity{
private static final long serialVersionUID = -1390767030654384142L;
private static final String GAME_FIELD = "GAME";
private GameypeEnum gameTypeEnum;
private Set<GameCode> gameCodes;
@Transient
public GameTypeEnum getGameTypeEnum() {
return gameTypeEnum;
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = GAME_FIELD, fetch = FetchType.LAZY)
public Set<GameCode> getGameCodes() {
return gameCodes;
}
public void setGameTypeEnum(GameTypeEnum gameTypeEnum) {
this.gameTypeEnum = gameTypeEnum;
}
public void setGameCodes(Set<GameCode> gameCodes) {
this.gameCodes = gameCodes;
}
ソースコードをデバッグしたところ、リポジトリからデータを取得した後にトランザクションをコミットすると、次の例外がスローされることがわかりました。
org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction;
nested exception is javax.persistence.RollbackException: Error while committing the transaction
javax.persistence.RollbackException: Error while committing the transaction java.util.HashSet
cannot be cast to org.hibernate.collection.PersistentCollection
修正方法がわかりません。私は何が欠けていますか?
クライアントコード:
@Transactional(readOnly = true)
public List<Game> getGames(String nameContains, Long pageSize){
if(!nameContains.isEmpty() && pageSize !=null){
return repository.findAll(nameIsLike(nameContains), constructPageSpecification(pageSize)).getContent(); }
else{ if(pageSize != null){
return repository.findAll(null, constructPageSpecification(pageSize)).getContent(); }
else if(!nameContains.isEmpty()){
return repository.findAll(nameIsLike(nameContains)); }else{ return repository.findAll();
}
}
}