我有2个类,对于我的业务逻辑,我使用的是不同的程序包,但具有相同的类名。
让我说:
软件包:
com.mycompany.myview1.entities
@Entity
public class MyClass {
...
...fields...
}
软件包:
com.mycompany.myview2.entities
@Entity
public class MyClass {
...
...fields...
}
它们代表数据库的不同视图,然后具有不同的字段。
因此,当我有两个不同的JpaRepositories
时,在两种情况下,我的课程都将扩展MyClass
:
com.mycompany.myview1.entities
@Repository
public interface MyClassRepository extends JpaRepository<MyClass, Long> { } //MyClass here is from package myview1.
com.mycompany.myview2.entities
@Repository
public interface MyClassRepository extends JpaRepository<MyClass, Long> { } //MyClass here is from package myview2.
我了解到,当您使用相同的类名定义2个@Entities
时,其中之一会被覆盖。
我发现可以避免这种情况的解决方案是添加@Entity(name="myView1MyClass")
和@Entity(name="MyView2MyClass")
。
问题是我将要拥有几个这样的实体,它们会成长很多,并且我想使这一过程自动化。
我理想的(不起作用)解决方案是这样的:
@Entity(name=this.getClass().getName())
,但是正如我在互联网上发现的那样,注释只能接收最终常量。