首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Column和@Enumerated在嵌入实体中不起作用

@Column和@Enumerated在嵌入实体中不起作用
EN

Stack Overflow用户
提问于 2018-01-26 14:55:13
回答 1查看 134关注 0票数 1

我有一个主要的实体:

代码语言:javascript
复制
@Entity
@Table(name = "partners")
public class Partner {
    @ElementCollection
    @CollectionTable(
            name = "external_login",
            joinColumns = @JoinColumn(name = "partner_id")
    )
    private List<ExternalLogin> externalLogins;
...
}

ExternalLogin是嵌入式实体

代码语言:javascript
复制
@Embeddable
public class ExternalLogin {
    @Column(name = "type")
    @Enumerated(value = EnumType.STRING)
    private ExternalLoginType type;
    @Column(name = "login")
    private String login;
    @Column(name = "password_value")
    private String passwordValue;
}

public enum ExternalLoginType {
    ABC;
}

@Column@EnumeratedExternalLogin实体中不起作用。

例如,在查询中将是external_login.passwordValue而不是external_login.password_value

@Enumerated(value = EnumType.STRING)也不能工作。Hibernate正在尝试获取字段的int值,而不是string

有谁可以帮我?

EN

回答 1

Stack Overflow用户

发布于 2018-01-26 17:51:39

您误用了注解@Embeddable。请参阅oracle docs https://docs.oracle.com/javaee/6/api/javax/persistence/Embeddable.html中的说明

定义了一个类,该类的实例被存储为所属实体的固有部分,并共享该实体的标识。嵌入对象的每个持久属性或字段被映射到实体的数据库表

@Embeddable注解仅对单个关联字段有意义。将列表字段注释为@Embeddable是错误的。

只需替换

代码语言:javascript
复制
@Embeddable
public class ExternalLogin {

代码语言:javascript
复制
@Entity
public class ExternalLogin {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48456881

复制
相关文章

相似问题

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