Java 在hyperjaxb3中将一对多关系标记为不可更新或不可插入
我使用这个XSD定义通过Hyperjaxb3生成JPA对象。基本上,我需要的是生成的类将允许我访问列,而不是实体。我希望能够直接修改案例ID字段,而不是通过实体Java 在hyperjaxb3中将一对多关系标记为不可更新或不可插入,java,hibernate,jpa,jaxb,hyperjaxb,Java,Hibernate,Jpa,Jaxb,Hyperjaxb,我使用这个XSD定义通过Hyperjaxb3生成JPA对象。基本上,我需要的是生成的类将允许我访问列,而不是实体。我希望能够直接修改案例ID字段,而不是通过实体 <?xml version="1.0" encoding="windows-1252" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ws="http://www.sample.code/types" targetNa
<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ws="http://www.sample.code/types"
targetNamespace="http://www.sample.code/types"
elementFormDefault="qualified">
<xsd:complexType name="CaseType">
<xsd:annotation>
<xsd:documentation>
Entity 1
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="id" type="xsd:integer" />
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="priority" type="xsd:boolean"/>
<xsd:element name="elements" type="ws:ElementType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Case" type="ws:CaseType" />
<xsd:complexType name="ElementType">
<xsd:annotation>
<xsd:documentation>
Entity 2
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="id" type="xsd:integer" />
<xsd:element name="creation_date" type="xsd:dateTime"/>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="element_type" type="xsd:string"/>
<xsd:element name="case" type="ws:CaseType" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Element" type="ws:ElementType" />
</xsd:schema>
我需要的是一种修改hyperjaxb配置的方法,以便能够生成如下内容:
@ManyToOne(targetEntity = CriminalCaseType.class, cascade = {
CascadeType.ALL
})
@JoinColumn(name = "CASE_ID", updatable = false, insertable = false)
public CriminalCaseType getCase() {
return _case;
}
.
.
.
@Basic
@Column(name = "CASE_ID")
public BigInteger getCaseId() {
return _caseId;
}
public BigInteger setCaseId(BigInteger value) {
this._caseId = value;
}
由于这个@JoinColumn(name=“CASE_ID”,updateable=false,insertable=false)我不知道如何在我的binding.xjb文件中进行配置,所以我可以这样定义我的复杂类型
<xsd:complexType name="ElementType">
<xsd:annotation>
<xsd:documentation>
Entity 2
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="id" type="xsd:integer" />
<xsd:element name="case_id" type="xsd:integer" />
<xsd:element name="creation_date" type="xsd:dateTime"/>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="element_type" type="xsd:string"/>
<xsd:element name="case" type="ws:CaseType" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Element" type="ws:ElementType" />
实体2
请尝试:
<orm:join-column name="CASE_ID" updatable="false" insertable="false"/>
请参见,它记录了HJ3的定制模式
免责声明:我是。就是这样。如何将此评论标记为解决方案?我想我做不到,可以吗?谢谢
<xsd:complexType name="ElementType">
<xsd:annotation>
<xsd:documentation>
Entity 2
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="id" type="xsd:integer" />
<xsd:element name="case_id" type="xsd:integer" />
<xsd:element name="creation_date" type="xsd:dateTime"/>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="element_type" type="xsd:string"/>
<xsd:element name="case" type="ws:CaseType" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="Element" type="ws:ElementType" />
<orm:join-column name="CASE_ID" updatable="false" insertable="false"/>