我注意到當其他人遇到這個問題時,這是因為他們正在嘗試投射物件。我不是想投。此外,我試圖使用 Spring Boot 存盤庫詢問資料表中是否存在物件。出現以下問題:
究竟是什么問題?
該模型:
@Entity
@Table(name = "skillGroup")
@Data
@Builder
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class SkillGroup {
@Id
@Column(name = "id")
@SequenceGenerator(
name = "skillGroup_sequence",
sequenceName = "skillGroup_sequence",
allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "skillGroup_sequence")
private Long id;
@Column(name = "name", columnDefinition = "TEXT", unique = true, nullable = false)
private String name;
@Column(name = "type", columnDefinition = "CHAR(2)")
private char type;
}
存盤庫:
@Repository
public interface SkillGroupRepo extends
JpaRepository<SkillGroup, Long> {
List<SkillGroup> findSkillGroupByType(Character type);
SkillGroup findSkillGroupByName(String name);
boolean findSkillGroupByNameAndType(String name, Character type);
}
考試:
@Rollback(value = false)
@SpringBootTest
class SkillGroupRepoTest {
@Test
public void findSkillGroupByNameAndType() {
boolean skillGroup = skillGroupRepo.findSkillGroupByNameAndType("Gebruikersinteractie", 'B');
System.out.println("skillGroup = " skillGroup);
Assertions.assertTrue(skillGroup);
}
}
如果相關,服務類:
@Service
@Transactional
@RequiredArgsConstructor
@AllArgsConstructor
public class SkillGroupService {
@Autowired
private SkillGroupRepo skillGroupRepo;
private SkillGroupMapper skillGroupMapper;
public void AddSkillGroup(String name, Character type) {
if(skillGroupRepo.findSkillGroupByNameAndType(name, type)) {
throw new ResponseStatusException(
BAD_REQUEST,
"Skill group with name: " name " and type: " type " already exists.");
}
SkillGroup skillGroup = SkillGroup.builder()
.name(name)
.type(type)
.build();
skillGroupRepo.save(skillGroup);
}
錯誤資訊:
休眠:從技能組技能組0_中選擇技能組0_.id作為id1_7_,技能組0_.name作為name2_7_,技能組0_.type作為type3_7_,其中技能組0_.name=?和技能組0_.type=?
java.lang.ClassCastException:類 hs.leiden.competenceApp.skill_related.skill_groups.SkillGroup 不能轉換為類 java.lang.Boolean(hs.leiden.competenceApp.skill_related.skill_groups.SkillGroup 位于加載程式“app”的未命名模塊中; java.lang.Boolean 在加載器“bootstrap”的模塊 java.base 中)
在 jdk.proxy2/jdk.proxy2.$Proxy99.findSkillGroupByNameAndType(Unknown Source) at hs.leiden.competenceApp.skill_related.skill_groups.SkillGroupRepoTest.findSkillGroupByNameAndType(SkillGroupRepoTest.java:43)
uj5u.com熱心網友回復:
find…方法回傳已找到的型別的實體。在你的情況下SkillGroupRepo,它將回傳一個SkillGroup. 如果要回傳boolean指示是否可以在資料庫中找到某些內容,則應使用以下exists…方法:
boolean existsByNameAndType(String name, Character type);
您可以在 Spring Data JPA 參考檔案的查詢創建部分了解更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/475950.html
