实体类注解出错-Could-not-determine-type-for-java.util.Set,-at-table-adm_role
目录
实体类注解出错: Could not determine type for: java.util.Set, at table: adm_role
配置了User与Role的多对多关系,启动测试,提示如下错误:
Could not determine type for: java.util.Set, at table: adm_role, for columns: [org.hibernate.mapping.Column(users)]
//省略若干错误信息
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) ~[spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) ~[spring-beans-4.0.5.RELEASE.jar:4.0.5.RELEASE]
... 40 common frames omitted
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: adm_role, for columns: [org.hibernate.mapping.Column(users)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at org.hibernate.mapping.Property.isValid(Property.java:241) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at org.hibernate.mapping.RootClass.validate(RootClass.java:270) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at org.hibernate.cfg.Configuration.validate(Configuration.java:1358) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849) ~[hibernate-core-4.3.5.Final.jar:4.3.5.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) ~[hibernate-entitymanager-4.3.5.Final.jar:4.3.5.Final]
... 48 common frames omitted
主要原因是因为出现,有的JPA注解用在 getter 方法上,有的注解使用在 实体类的属性上。必须统一,要么在方法上,要么在属性上。出错的主要原因是个人喜欢把 @注解 都放在属性上,因为查看代码的时候基本属性都定义在最前面,比较一目了然,否则定义在getter方法上还有去找,费神。 但是我所有的 实体类都继承自抽象类: IdEntity,,IdEntity把JPA注解在 getter方法,所以出现了以上错误。