首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate @Embedded和@Embeddable

Hibernate @Embedded和@Embeddable
EN

Stack Overflow用户
提问于 2019-03-14 19:23:22
回答 1查看 234关注 0票数 0

我必须使用Hibernate创建一个简单的数据库,但无论我做了什么,我都会得到这个错误:

org.hibernate.MappingException: entity的映射中有重复的列: tr.com.ozer.datastructures.GameObject列:x(应映射为insert="false“update="false")

首先,我使用的是PostgreSQL 11和Hibernate 5.4

这就是我想要做的:

代码语言:javascript
复制
@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“配置文件,但我仍然收到这个错误。下面是这行代码:

代码语言:javascript
复制
<property name="hibernate.implicit_naming_strategy">org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl</property>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-14 20:20:42

好吧,这个错误是我的错。但我会发布我的解决方案,以防任何人有它。

我一直在使用Hibernate 5,并用旧方法初始化它。在我用StandardServiceRegistry初始化之后,这个错误就消失了。这实际上很有趣,在5.4版本中,没有@Embedded注解的情况下,初始化metod的旧方法正常工作。它应该会给出“错误的方式初始化错误”或者别的什么,我就不会在这个上面花费几个小时了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55161262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档