我创建JPA实体存储有关客户的信息。 我有一个客户叫抽象类。 它有两个叫消费者和用户的子类。 无论购物者和用户都在我创建了一个称为元数据存储另一个类的键值对的形式对他们的元数据。 我的问题是,我该如何有序列的元数据通过抽象类客户的增加? 下面是一些代码,所以你可以看到我在说什么:
@Inheritance( strategy = TABLE_PER_CLASS )
public abstract class Customer implements Serializable
{
@OneToMany( mappedBy = "parent", orphanRemoval = false )
@OrderColumn //THIS IS CAUSING AN ERROR, BUT I WANT AN ORDERED COLUMN - PLEASE HELP
private List<MetaDataType> metaData;
}
用户和购物类是相同的本质,没有什么特别在这里 -
@Entity
public class User extends Customer implements Serializable
{
...some user specific stuff
}
这里是元数据类 -
@Entity
public class MetaData implements Serializable
{
@EmbeddedId
protected MetaDataId id;
@ManyToOne
@JoinColumn( name = "parentGuid", referencedColumnName = "guid", insertable = false, updatable = false )
protected Customer parent;
....
}
如果我只有一个孩子上课说的用户,这正常工作和元数据表得到一个名为metaData_order列,一切都很好。 问题是,当我添加了购物的实体,现在的元数据表试图插入两个MetaData_order列,引发此异常 -
java.sql.SQLSyntaxErrorException: Column name 'METADATA_ORDER' appears more than once in the CREATE TABLE statement.
Call: CREATE TABLE METADATA (VALUE VARCHAR(255), parentGuid VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL, metaData_ORDER INTEGER, metaData_ORDER INTEGER, PRIMARY
KEY (parentGuid, name))
如果我补充一点,实现客户第三个孩子上课,语句试图插入三个metaData_ORDER列。 很显然我没有正确地做这个抽象,我缺少什么?