首页 > 解决方案 > 休眠不同的方法名称作为字段

问题描述

hibernate 是否有可能使用具有不同名称的 getter 作为字段?

....
private ComplexObject test;

@Access(AccessType.PROPERTY)   
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "number_format")
public ComplexObject getSomeStuff() {
    ....
    return test;
}
....

我总是得到一个例外

原因:javax.persistence.PersistenceException:[PersistenceUnit:默认] 无法在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:1249) 处构建 Hibernate SessionFactory~[hibernate-entitymanager-4.3.11。 Final.jar:4.3.11.Final] 在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.access$600(EntityManagerFactoryBuilderImpl.java:120) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11。最终] 在 org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:860) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] 在 org.hibernate.jpa .boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] 在 org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:425) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 在 org.hibernate。 jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:849) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory (SpringHibernateJpaPersistenceProvider.java:60)~[spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)~[spring- orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] 在 org.springframework.orm.jpa.AbstractEntityManagerFactoryBean。afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318) ~[spring-orm-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~ [spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.4. RELEASE.jar:4.2.4.RELEASE] ...省略了21个常用框架beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] ...省略了21个常用框架beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] ...省略了21个常用框架

引起:org.hibernate.MappingException:无法确定类型:ComplexObject,在表:表,列: [org.hibernate.mapping.Column(extension_form_element_number_format)] 在 org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:349) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 在org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:322) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.mapping.Property.isValid(Property.java :241) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496) ~[hibernate-core-4.3.11. Final.jar:4.3.11.Final] 在 org.hibernate.mapping.RootClass.validate(RootClass.java:270) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 在 org. hibernate.cfg.Configuration.validate(Configuration.java:1360) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] 在 org.hibernate.cfg.Configuration。buildSessionFactory(Configuration.java:1851) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:857) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] ...省略29个常用框架

如果方法不是由字段命名的(在本例中为 getTest())。

谢谢

标签: javadatabasehibernate

解决方案


推荐阅读