spring-projects / spring-boot-data-geode

Spring Boot support for Apache Geode and VMware GemFire
https://projects.spring.io/spring-boot
Apache License 2.0
46 stars 49 forks source link

Inheriting from entity types causes failure when using entity-defined Regions #112

Open yozaner1324 opened 2 years ago

yozaner1324 commented 2 years ago

Failure: The bean 'Person' could not be registered. A bean with that name has already been defined and overriding is disabled.

Scenario: This occurs when a class extends a data class annotated with @Region, even if the subclass is not used.

Example:

@Region("Person")
class Person{
    @Id
    private String name;
    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

class Customer extends Person {
    public Customer(String name) {
        super(name);
    }
}

If Customer doesn't extend Person, there is no issue, but if it does, the application context will fail to load.

Work arounds:

Repo reproducing issue: https://github.com/yozaner1324/SBDG-using-sealed-classes

jxblum commented 2 years ago

TODO: Move to Spring Data for Apache Geode (SDG) Issues since the @EnableEntityDefinedRegions annotation is specific to Spring Data Geode.