我有一个主要的实体:
@Entity
@Table(name = "partners")
public class Partner {
@ElementCollection
@CollectionTable(
name = "external_login",
joinColumns = @JoinColumn(name = "partner_id")
)
private List<ExternalLogin> externalLogins;
...
}
而ExternalLogin是嵌入实体
@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
和@Enumerated
在ExternalLogin
实体中不起作用。
例如,在查询中将是external_login.passwordValue
而不是external_login.password_value
。@Enumerated(value = EnumType.STRING)
也不起作用。休眠正在尝试获取字段的int
值,而不是string
。
有谁可以帮我?
2条答案
按热度按时间guicsvcw1#
您误用了注解*@Embedble*。请参阅Oracle文档中的说明https://docs.oracle.com/javaee/6/api/javax/persistence/Embeddable.html
定义一个类,该类的示例存储为所属实体的固有部分,并共享该实体的标识。嵌入对象的每个持久属性或字段被Map到实体的数据库表
只要更换就行了
至
ha5z0ras2#
我刚才也遇到了同样的问题。对我来说,解决方案最终是添加
添加到可嵌入对象。