我正在尝试定义一个@Embeddable
类与另一个实体的@ManyToOne
关系。 @OneToMany
方有@Id
字段,注明@Access(AccessType.Property)
。这是一个示例代码来说明:
@Embeddable
class Embeddable {
@ManyToOne
private ClassA classA;
}
@Entity
class ClassA implements Serializable {
@Id
@GeneratedValue
@Access(AccessType.Property)
private Long id;
public Long getId() { return id; }
}
@Entity
class ClassB {
@ElementCollection
private List<Embeddable> embeddables;
}
问题是类Embeddable
的创建表定义似乎是错误的。 ClassA
的列的类型为bytea
,其名称为class_a
,而不是bigint
和class_a_id
。此外,如果我尝试持久化一个数据集,则ClassA的相关实体将被序列化为hex ..每个其他@Entity
按预期工作。这是我的错误还是错误?
修改 可嵌入表(当前状态):
| class_b_id | class_a |
| type: int | type: typea |
|:-----------|------------:|
| 123 | A3B4738D.. |
可嵌入(需要状态)表:
| class_b_id | class_a_id |
| type: int | type: int |
|:-----------|------------:|
| 123 | 2 |