hyperjaxb
的默认配置是创建hibernate注释,导致hibernate
注释产生令人难以置信的详细SQL
语句,导致SQLException
处于最差状态且性能降低最好。具体来说,CascadeType.ALL
设置似乎是默认设置。如何覆盖默认设置,以便自定义CascadeType
,FetchType
和其他参数?是否可以在全局级别设置这些默认变量,这样我就不必更改schema.xsd文件中数百个引用中的每一个?
这是一个例子。 Hyperjaxb
正在生成以下hibernate
注释:
@ManyToOne(targetEntity = Code.class, cascade = {
CascadeType.ALL
})
@JoinColumn(name = "SOME_CODE1_P_0")
public Code getSomeCode1() {
return someCode1;
}
来自以下架构片段:
<xs:complexType name="SomeTypeName">
<xs:sequence>
<xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="someCode1" type="Code" minOccurs="0"/>
<xs:element name="someCode2" type="Code" minOccurs="0"/>
<xs:element name="someCode3" type="Code" minOccurs="0"/>
<xs:element name="someCode4" type="Code" minOccurs="0"/>
<xs:element name="someCode5" type="Code" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Code">
<!--<xs:sequence>elements with nested data types omitted for simplicity</xs:sequence>-->
<xs:attribute name="code" type="xs:string" use="optional"></xs:attribute>
<xs:attribute name="Name" type="xs:string" use="optional"></xs:attribute>
</xs:complexType>
答案 0 :(得分:0)
您可以根据需要自定义默认映射:
http://confluence.highsource.org/display/HJ3/Customizing+default+mappings
这是一个customizes defaults。
的测试项目例如,自定义many-to-one
的默认级联看起来像(未经测试):
<jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
<hj:persistence>
<hj:default-many-to-one>
<!-- So what do you think to be a reasonable default mapping? -->
<orm:cascade>
<orm:cascade-persist/>
</orm:cascade>
</hj:default-many-to-one>
</hj:persistence>
</jaxb:bindings>
更多链接:
请查看文档。您可以(但不必)定制很多。