有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring数据到@ManyToMany字段的投影

我有一个User实体,其中包含以下字段:

@ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "FAVORITE_TAGS", joinColumns = arrayOf(JoinColumn(name = "USER_ID")), inverseJoinColumns = arrayOf(JoinColumn(name = "TAG_ID")))
    @BatchSize(size = 24)
    val favoriteTags: MutableSet<Tag>? = null

我定义了以下DTO:

data class UserProfileDto(
        ...
        val favoriteTags: MutableSet<Tag>?,
        ...
): UserDto()

最后,这是UserRepository方法之一(DTO动态投影):

fun <T: UserDto> findByUsername(username: String, type: Class<T>): T?

问题是,当我调用userRepository.findByUsername("username", UserProfileDto::class.java)时,我得到以下异常:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [com.cillariodelsanto.socialnotes.entity.dto.UserProfileDto]. Expected arguments are: 
    java.lang.String, java.lang.String, java.lang.String, double, long, com.cillariodelsanto.socialnotes.entity.Tag, long, long, long, long [select new com.cillariodelsanto.socialnotes.entity.dto.UserProfileDto(generatedAlias0.username, generatedAlias0.name, generatedAlias0.userPicPath, generatedAlias0.averageScore, generatedAlias0.documentsRatingsCount, favoriteTags, generatedAlias0.documentsCount, generatedAlias0.favoriteDocumentsCount, generatedAlias0.followingCount, generatedAlias0.followersCount) from com.cillariodelsanto.socialnotes.entity.User as generatedAlias0 left join generatedAlias0.favoriteTags as favoriteTags where generatedAlias0.username=:param0]

问题是MutableSet(我也尝试过CollectionSet,但结果是一样的)。有办法解决吗

我知道使用接口而不是DTO可以解决这个问题,但我想知道使用DTO是否可以达到同样的效果。非常感谢


共 (0) 个答案