2015-08-15 6 views
1

Я получаю исключение отображения Hibernate для простой аннотации JPA. Это мертво просто взаимно-однозначное объединение. Все использует аннотацию JPA, поэтому нет xml-конфигурации.Исключение сопоставления Hibernate: не удалось определить тип для столбца - снова

Вот сообщение об исключении:

Не удалось определить тип для: 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.Final с hibernate-jpa-2.1-api.

Вот отрывок из моей зависимости:

<!-- 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) 

Изменились ли правила игры?

+0

Может быть, [это] (http://stackoverflow.com/a/26417545/3998458) может помочь вам. –

ответ

0

Вам необходимо отметить отображение Address класса в Company

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

Это взаимно однозначное отображение, нет таблицы соединений. – DhafirNz

+0

use @OneToOne аннотация –

+0

Да, добрый, понял это, посмотрев другие примеры. Так просто, подумал, что это не нужно. – DhafirNz

Смежные вопросы