是否可以在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的数据
1条答案
按热度按时间frebpwbc1#
您不能为
@Entity
自定义注解,因为@Entity
注解只能添加到class(target = TYPE)中,并且需要注解类中的标识符(@Id
或@EmbeddedId
)。这意味着,当您将
@Entity
注解添加到自定义注解时,您必须提供@Id
或@EmbeddedId
注解字段.另一方面,Hibernate只搜索带有
@jakarta.persistence.Enttiy
或@javax.persistence.Enttiy
的类(取决于Hibernate版本),所以不会找到带有自定义注解的类。