spring-boot-data-geode
spring-boot-data-geode copied to clipboard
Inheriting from entity types causes failure when using entity-defined Regions
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:
- Set
spring.main.allow-bean-definition-overridingto true - Don't use entity defined regions
- Don't inherit from data classes used to define regions.
Repo reproducing issue: https://github.com/yozaner1324/SBDG-using-sealed-classes
TODO: Move to Spring Data for Apache Geode (SDG) Issues since the @EnableEntityDefinedRegions annotation is specific to Spring Data Geode.