我有一个带有地图的实体。我在 PostgreSQL 上使用休眠。地图中的类是由 Java 定义的,我无法注释。我正在修改的类是从我无法更改的 XML 模式生成的。
所以我有
import java.util.HashMap;
import java.util.Map;
import javax.xml.namespace.QName;
@Entity public class TestClass {
@XmlTransient
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long pk;
...
@XmlAnyAttribute
@ElementCollection(fetch = FetchType.EAGER)
@Embedded
private final Map<QName, String> otherAttributes = new HashMap<QName, String>();
...
我正在使用 PostGreSQL,我收到以下错误:
Unsuccessful: create table TestClass_otherAttributes (TestClass_pk int8 not null, count int4 not null, hash int4 not null, offset int4 not null, value varchar(255), localPart varchar(255), namespaceURI varchar(255), prefix varchar(255), primary key (TestClass_pk, localPart, namespaceURI, prefix))
ERROR: syntax error at or near "offset" Position: 160
显然,这意味着其中一个字符串中的 order 字段(很可能在 QName 中,但很难确定)被保留,因此创建表失败。
我对此进行了研究,并发现了许多其他注释会影响它如何构建和命名连接表,但没有任何东西可以让我引用字段名称(同样,不能注释 QName 或 String)也不会影响列名这不需要键或值类中的注释。
所以我的问题是,要添加的最少注释数量是多少,以便我可以保留此地图?