Ich muss Indexgrößen wegen mssql Limit von 900 Bytes reduzieren.Wie kann ich die Indexgröße einer Hibernate-Sammlung reduzieren (gesetzt mit Composite-Element)?
Ich habe eine Klasse, die eine Sammlung als Satz deklariert hat. Aus diesem Grund besteht der Primärschlüssel aus allen Nicht-Null-Spalten einschließlich des Fremdschlüssels. Aus diesem Primärschlüssel wird ein Index erstellt. Ich brauche den Index nicht über all diese Spalten.
Gibt es eine Möglichkeit, die Indexgröße zu reduzieren, ohne das gesamte Setup der Datenstruktur zu ändern?
Hier ist die aktuelle Konfiguration der Sammlung innerhalb der umgebenden Klassendefinition:
<set cascade="save-update,persist,merge,refresh,replicate,evict,delete,delete-orphan" fetch="select" lazy="true" table="mySubsetTable" batch-size="1000" name="attributes">
<key foreign-key="FK_Mothertable">
<column name="number"/>
<column name="data"/>
</key>
<composite-element class="MySubsetElement">
<property name="type" length="200" not-null="true" type="class"/>
<property name="attribute" length="2000" column="attrValue" not-null="false"/>
<property name="myboolean" type="boolean">
<column name="myboolean"/>
</property>
<property name="anotherAttribute" length="200"/>
<property name="evenAnotherAttribute" length="200" not-null="true"/>
<property name="evenOneMoreAttribute" not-null="true">
<type name="SomeClass">
<param name="enumClass">someEnumClass</param>
</type>
</property>
</composite-element>
</set>
ich derzeit 3.3.1 mit xdoclet Anmerkungen bin mit Hibernate: viel
/**
* Attributes of this matchable
*
* @hibernate.set table="mySubsetTable" cascade="save-update,persist,merge,refresh,replicate,evict,delete,delete-orphan" lazy="true"
* batch-size="1000" fetch="select"
* @hibernate.key foreign-key="FK_Mothertable"
* @hibernate.key-column name="number"
* @hibernate.key-column name="data"
* @hibernate.composite-element class="MySubsetElement"
*/
public Set<MySubsetElement> getSubsetElements() { ... }
Dank für Ihre
Vorschläge!(Und bitte beziehen Sie mich nicht zu http://docs.jboss.org/hibernate/ fand ich schon.)
EDIT ich nicht die Größe aller Eigenschaften reduzieren können die Größenbeschränkungen passen. Ein aus den Fremdschlüsseln bestehender Index würde genügen. Auch ich würde wirklich gerne eine Lösung, die die zugrunde liegende Datenstruktur nicht ändert, da ich an einem Produkt arbeite, das bereits verwendet wird.
Sie verwenden 'zusammengesetzte Elemente'. Ist das erforderlich? Warum nicht "First Citizen" -Entitäten von "MySubsetElement" erstellen und eine normale "OneToMany" -Beziehung verwenden? – JimmyB
Ich habe hier eine riesige Struktur und jemand, der vor mir kam, hat es irgendwann so definiert ... Wenn es eine Möglichkeit gibt, dies anders zu machen, möchte ich es hier sehen und später auswerten, wenn es auf meinen Fall angewendet werden kann. Vielen Dank für Ihre Vorschläge! –
Würde dies bedeuten, "MySubset" als eine Einheit zu konfigurieren und eine Eins-zu-viele-Beziehung in der Menge zu machen? –