java – JPA Long @Id作为JAXB @XmlID生成XSD验证错误
我已经实现了基于JPA和JAXB的REST API. 我有一个大致相似的课程(非常简化):
Hibernate(我当前的JPA提供程序)生成数字作为id值,但它们自然只对一种类型唯一,在本例中为Thing. 现在XSD说xsd:id(@XmlID)是一个NCString,它不能是普通数字,所以我在JAXBLongAdapter中为数字加上’_’. – 比如’_1′ 现在架构验证器抱怨:
如果我理解正确,xsd:ID元素必须具有xml文档中全局唯一的(字符串)值.但这与在数据库中使用ID的常见方式完全相反. 现在我该怎么做? >为每种类型创建一个具有特定类型前缀的JAXBLongAdapter? 我现在似乎必须更改数据库架构以使用不同的ID. 我的问题:ID发生器是否具有相对快速且全球独一无二的特点? 编辑: 这种黑客有点工作,使JPA ID保持不变.
通过将JAXB Annotation从字段移动到XmlID的专用私有getter / setter. 最佳答案
这正是我一段时间以来所做的.
在编组时,您可以问自己这个域对象的实际@XmlID是什么? 我曾经认为@XmlID和@XmlIDREF可以解决JAXB中的循环问题. 以下是我正在使用JPA实体和JAXB注释. 不要给简单的JPA @Id了.这是JPA的核心.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |