Spring Boot 为JPA @Entity创建自定义注解

dfddblmv  于 7个月前  发布在  Spring
关注(0)|答案(1)|浏览(118)

是否可以在spring Boot 应用程序中创建自定义JPA @Entity。
在我的应用程序中,我需要在关系数据库和Mongo DB之间切换,只创建一个实体类,而不创建任何重复的实体类。
我想创建我自己的注解,比如说@MyOwn,这样我就可以根据数据库的需要注入注解。
@MyOwn将根据所选数据库充当@Entity以及@Document注解。
我可以使用@MyOwn注解自定义@Document实体。
但对于@Entity,我无法做到这一点。
我是例外。

Caused by: java.lang.IllegalArgumentException: Not a managed type: class com.mt.mtamp.employee.entity.Employee
at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:583) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final]
at org.hibernate.metamodel.internal.MetamodelImpl.managedType(MetamodelImpl.java:85) ~[hibernate-core-5.6.12.Final.jar:5.6.12.Final]
at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:75) ~[spring-data-jpa-2.7.5.jar:2.7.5]
at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getEntityInformation(JpaEntityInformationSupport.java:66) ~[spring-data-jpa-2.7.5.jar:2.7.5]
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:233) ~[spring-data-jpa-2.7.5.jar:2.7.5]
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:182) ~[spring-data-jpa-2.7.5.jar:2.7.5]
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:165) ~[spring-data-jpa-2.7.5.jar:2.7.5]
at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:76) ~[spring-data-jpa-2.7.5.jar:2.7.5]
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:325) ~[spring-data-commons-2.7.5.jar:2.7.5]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:323) ~[spring-data-commons-2.7.5.jar:2.7.5]
at org.springframework.data.util.Lazy.getNullable(Lazy.java:231) ~[spring-data-commons-2.7.5.jar:2.7.5]
at org.springframework.data.util.Lazy.get(Lazy.java:115) ~[spring-data-commons-2.7.5.jar:2.7.5]
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:329) ~[spring-data-commons-2.7.5.jar:2.7.5]
at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:144) ~[spring-data-jpa-2.7.5.jar:2.7.5]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.23.jar:5.3.23]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.23.jar:5.3.23]
... 49 common frames omitted

字符串
让说

@Entity 
public class Employee {

 @Id
 public Long id;

 private String employeeId;

 private String employeeNAme;

 private String firstname;

 private String lastName;

}


在上面的这个类中,我需要用我自己的注解替换@Entity,比如@MyOwn
@MyOwn的行为应该与@Entity注解相同。
经过我自己的注解,类应该像下面这样

@MyOwn 
public class Employee {

 @Id
 public Long id;

 private String employeeId;

 private String employeeNAme;

 private String firstname;

 private String lastName;


}
自己的注解类:
x1c 0d1x的数据

frebpwbc

frebpwbc1#

您不能为@Entity自定义注解,因为@Entity注解只能添加到class(target = TYPE)中,并且需要注解类中的标识符(@Id@EmbeddedId)。
这意味着,当您将@Entity注解添加到自定义注解时,您必须提供@Id@EmbeddedId注解字段.
另一方面,Hibernate只搜索带有@jakarta.persistence.Enttiy@javax.persistence.Enttiy的类(取决于Hibernate版本),所以不会找到带有自定义注解的类。

相关问题