我在 Java Web 应用程序中有一个可嵌入的实体,如下所示:
@Embeddable
@Getter
@Setter
public class Address {
private String street;
private String alley;
private int postCode;
}
Run Code Online (Sandbox Code Playgroud)
我在另一个实体中使用了一个嵌入字段,如下所示:
@Entity
@Getter
@Setter
public class User {
@Embedded
private Address home;
@Embedded
private Address work;
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,发生错误:
org.hibernate.MappingException:实体映射中的重复列:my.package.User 列:alley(应映射为 insert="false" update="false")。
我该如何解决?
笔记:
@AttributeOverrides。更新:
我使用的配置applicationContext.xml如下:
<bean id="mainSessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>my.package</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
<prop key="hibernate.default_schema">public</prop>
<prop key="hibernate.implicit_naming_strategy">org.hibernate.boot.??model.naming.Impli??ci??tNamingStrategyCompo?nentPathImpl</prop>
</props>
</property>
</bean>
<bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="mainSessionFactory"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
我解决了我的问题,我想分享答案:
\n\n关键点是定义implicitNamingStrategy:
<bean id="mfNamingStrategy"\nclass="org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl" />\n<bean id="mainSessionFactory"\n class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> \n <property name="implicitNamingStrategy" ref="mfNamingStrategy" />\n <property name="hibernateProperties"> \n <props> \n ...\n <!-- <prop key="hibernate.implicit_naming_strategy">org.hibernate.boot.\xe2\x80\x8c?model.naming.Impli\xe2\x80\x8c?ci\xe2\x80\x8c?tNamingStrategyCompo\xe2\x80\x8cnentPathImpl</prop> -->\n </props> \n </property> \n</bean> \nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1349 次 |
| 最近记录: |