Search code examples
jpaspring-roospring-dataspring-data-jpa

Implicit super constructor QueryDslRepositorySupport() is undefined for default constructor. Must define an explicit constructor


I use Spring Roo + Spring Data + QueryDSL and I have the following classes/interfaces:

public interface FamilyAdvertisementRepositoryCustom {
}

@RooJpaRepository(domainType = FamilyAdvertisement.class)
public interface FamilyAdvertisementRepository extends FamilyAdvertisementRepositoryCustom {
}

public class FamilyAdvertisementRepositoryImpl extends QueryDslRepositorySupport implements FamilyAdvertisementRepositoryCustom {
   //NO CONSTRUCTOR
}

all in following package: com.bignibou.repository;

With following config:

<repositories base-package="com.bignibou.repository" />

However, I get this error:

[ERROR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.2:compile (default) on project bignibou: Compiler errors : [ERROR] error at public class FamilyAdvertisementRepositoryImpl extends QueryDslRepositorySupport implements FamilyAdvertisementRepositoryCustom { [ERROR] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [ERROR] /home/julien/Documents/donnees/projets/site-garde-enfants/java/bignibou/src/main/java/com/bignibou/repository/FamilyAdvertisementRepositoryImpl.java:5:0::0 Implicit super constructor QueryDslRepositorySupport() is undefined for default constructor. Must define an explicit constructor

It seems the QueryDslRepositorySupport class no longer has a default constructor whereas this was the case before. Why is that??

What I am getting wrong?


Solution

  • The change was introduced to force the Builder being returned from getBuilder() into a single domain type. Simply create a constructor without arguments and invoke the super class' constructor with the domain type you implement the repository for.