我必须使用Hibernate创建一个简单的数据库,但无论我做了什么,我都会得到这个错误:
org.hibernate.MappingException: entity的映射中有重复的列: tr.com.ozer.datastructures.GameObject列:x(应映射为insert="false“update="false")
首先,我使用的是PostgreSQL 11和Hibernate 5.4
这就是我想要做的:
@Embeddable
public class Position {
private Integer x;
private Integer y;
// Setters end getters
}
@Entity
public class GameObject {
@Id
private Integer id;
@Embedded
private Position absPosition;
@Embedded
private Position relativeToBaseA;
@Embedded
private Position relativeToBaseB;
// Setters and getters
}我不想使用@AttributeOverrride,因为我的Position类比这里有更多的字段,而且我不想为每个字段定义所有字段。取而代之的是,我只需要编写单独的字段。
而且我不关心数据库的列名那么多atm。Hibernate中有自动命名机制吗?如absPosition_x、absPosition_y、relativeToBaseA_x、relativeToBaseA_y等。
注意:尽管我的hibernate.cfg.xml中有"implicit_naming_strategy“配置文件,但我仍然收到这个错误。下面是这行代码:
<property name="hibernate.implicit_naming_strategy">org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl</property>发布于 2019-03-14 20:20:42
好吧,这个错误是我的错。但我会发布我的解决方案,以防任何人有它。
我一直在使用Hibernate 5,并用旧方法初始化它。在我用StandardServiceRegistry初始化之后,这个错误就消失了。这实际上很有趣,在5.4版本中,没有@Embedded注解的情况下,初始化metod的旧方法正常工作。它应该会给出“错误的方式初始化错误”或者别的什么,我就不会在这个上面花费几个小时了!
https://stackoverflow.com/questions/55161262
复制相似问题