我正在尝试使用JavaPOET库为JPA存储库生成代码,但是
我收到“只有类具有超类,而不是接口”错误。

@Repository
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
}


这是我尝试过的JavaPOET代码。

TypeSpec userRepository = TypeSpec.interfaceBuilder("UserRepository")
                .addAnnotation(Repository.class)
                .addModifiers(Modifier.PUBLIC)
                .superclass(ParameterizedTypeName.get(ClassName.get(PagingAndSortingRepository.class),
                                                      ClassName.get(User.class),
                                                      ClassName.get(Long.class)))
                .build();


生成扩展类的接口的任何解决方案/最佳实践?
谢谢,

最佳答案

消息很清楚:


  “只有类具有超类,没有接口”错误。


TypeSpec.Builder.superclass()实际上只允许指定类。
要指定接口,请使用TypeSpec.Builder.addSuperinterface()

它会给:

TypeSpec userRepository = TypeSpec.interfaceBuilder("UserRepository")
                .addAnnotation(Repository.class)
                .addModifiers(Modifier.PUBLIC)
                .addSuperinterface(ParameterizedTypeName.get(ClassName.get(PagingAndSortingRepository.class),
                                                      ClassName.get(User.class),
                                                      ClassName.get(Long.class)))
                .build();


它应该生成以下代码:

@org.springframework.data.repository.Repository
public interface UserRepository extends org.springframework.data.repository.PagingAndSortingRepository<User, java.lang.Long> {
}


您可以在JavaPOET项目的单元测试中找到完整的示例。
请参见git

关于java - JavaPOET-只有类具有父类,而没有INTERFACE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46757224/

10-10 07:58