【问题标题】:Hibernate mapping exception:could not determine type for column - againHibernate 映射异常:无法确定列的类型 - 再次
【发布时间】:2015-08-15 20:18:02
【问题描述】:

我得到一个简单 JPA 注释的 Hibernate 映射异常。这是非常简单的一对一关联。 一切都使用 JPA 注释,所以没有 xml 配置。

这是异常消息:

无法确定类型:nz.co.threepoints.ps.domain.Address,在表:公司,列:[org.hibernate.mapping.Column(physicalAddress)]

我知道如果您混合使用字段和方法注释,您可能会遇到此异常,但在我的情况下,我只使用字段注释:

@Entity
public class Address {
    @Id
    @GeneratedValue
    private Long id;

    private String streetNumber;
    private String streetLine1;
    private String streetLine2;
   // getters and setters
}

以及公司类型:

@Entity
public class Company {
    @Id
    @GeneratedValue
    private Long id;

    private Address physicalAdress;

    // getters and setters
}

映射对我来说似乎很简单,但由于某种原因,即使我使用不同的类型(如用户),我也会遇到这种类型的异常。

我正在使用 Hibernate 4.3.8.Finalhibernate-jpa-2.1-api

这是我的依赖项的 sn-p:

<!-- hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>${hibernate.validator.version}</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-infinispan</artifactId>
            <version>4.3.8.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.jbossts</groupId>
            <artifactId>jbossjta</artifactId>
            <version>4.16.6.Final</version>
        </dependency>

这是异常堆栈的一部分:

org.hibernate.MappingException: Could not determine type for: nz.co.threepoints.ps.domain.User, at table: Company, for columns: [org.hibernate.mapping.Column(user)]
        at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336)
        at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310)
        at org.hibernate.mapping.Property.isValid(Property.java:241)
        at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496)
        at org.hibernate.mapping.RootClass.validate(RootClass.java:270)
        at org.hibernate.cfg.Configuration.validate(Configuration.java:1360)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1851)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845)
        at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844)
        at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1625)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1562)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:956)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:747)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
        at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677)
        at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548)
        at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489)
        at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)

他们改变了游戏规则吗?

【问题讨论】:

  • 也许this 可以帮助你。

标签: hibernate hibernate-mapping


【解决方案1】:

Company中需要提及Address类的映射

@ManyToOne
@JoinColumn(name = "address_id") //column name in company table
private Address physicalAddress;

【讨论】:

  • 是一对一映射,没有连接表。
  • 使用@OneToOne注解
  • 是的,通过查看其他示例可以弄清楚这一点。这么简单,还以为不需要呢。
猜你喜欢
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 2012-03-11
相关资源
最近更新 更多