Constraints

Sometimes it is desired to load only a subset of elements while loading a field of a relationship mapping (1:1, 1:n, 1:m). This is called a constraint.

In Signsoft intelliBO the extension restriction is used to indicate such a constraint.

Signsoft intelliBO supports simple key-value constraints, where a field of the element type must have a special value. This value can be either a (String) literal or a constant defined in a Java class.

These constraints are used while loading the field. In this case, special SQL fragments are created, which filter the elements.

If you want to use constraints, it is recommended that the field is mapped with the extension read-only. If write accesses is wanted, another field without constraints should be defined.

You can define a literal constraint as follows:

<field name="validAddresses">
...
  <extension key="jdbc" vendor-name="ssibo">
...
    <extension key="mapping" value="one-to-many" vendor-name="ssibo" >
      <extension key="read-only" value="true" vendor-name="ssibo"/>
      <extension vendor-name="ssibo" key="restriction" value="constant">
        <extension vendor-name="ssibo" key="field" value="state"/>
        <extension vendor-name="ssibo" key="value" value="valid"/>
      </extension>
    </extension> 
  </extension>
</field>

You can define a constant constraint as follows:

<field name="validAddresses">
...
  <extension key="jdbc" vendor-name="ssibo">
...
    <extension key="mapping" value="one-to-many" vendor-name="ssibo" >
      <extension key="read-only" value="true" vendor-name="ssibo"/>
      <extension vendor-name="ssibo" key="restriction" value="staticfield">
        <extension vendor-name="ssibo" key="field" value="state"/>
        <extension vendor-name="ssibo" key="value" value="com.signsoft.test.Constants.VALID"/>
      </extension>
    </extension> 
  </extension>
</field>