【发布时间】:2016-03-31 01:44:21
【问题描述】:
我使用 Hibernate 4.1。
我在Sanad 中有一个实体Sanad 和一个嵌入式类Gas。
@Entity
public class Sanad{
@Id
private int id;
@NaturalId
@Embedded
Gas gas;
}
@Embeddable
@AttributeOverrides({
@AttributeOverride(name = "gate", column = @Column(name = "gate")),
@AttributeOverride(name = "serial", column = @Column(name = "serial"))
})
public class Gas{
int gate;
String serial;
}
我希望 Sanad 中的 gas 字段为 NaturalId。我该怎么做?
当我在Sanad 的气场上方使用@NaturalId 时,我在部署时遇到了这个异常:
Caused by: org.hibernate.MappingException: Unable to find logical column name from physical name gas in table Sanad
at org.hibernate.cfg.Configuration$MappingsImpl.getLogicalColumnName(Configuration.java:3258)
at org.hibernate.cfg.IndexOrUniqueKeySecondPass.doSecondPass(IndexOrUniqueKeySecondPass.java:83)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1695)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1424)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
【问题讨论】:
标签: java database hibernate orm entity