This page describes an older version of the product. The latest stable version is 16.4.

Property Annotations


The GigaSpaces API supports field-level decorations with PONOs. These can be specified via annotations on the space class source itself. The annotations are defined on the getter methods.

SpaceId

Syntax [SpaceId(AutoGenerate=)]
Argument boolean
Default false
Description Defines whether this field value is used when generating the Object ID. The field value should be unique – i.e., no multiple objects with the same value should be written into the space (each object should have a different field value). When writing an object into the space with an existing id field value, an EntryAlreadyInSpaceException is thrown. The Object ID is created, based on the id field value.
Specifies if the object ID is generated automatically by the space when written into the space. If false, the field is indexed automatically, and if true, the field isn’t indexed. If autoGenerate is declared as false, the field is indexed automatically. If autoGenerate is declared as true, the field isn’t indexed. If AutoGenerate is true, the field must be of the type String.

Example:

[SpaceClass]
public class Person {

  [SpaceId(AutoGenerate=false)]
  public long? Id {set; get;}

}
Learn more

SpaceRouting

Syntax [SpaceRouting]
Description The [SpaceRouting] annotation specifies a get method for the field to be used to calculate the target space for the space operation (Read , Write…). The [SpaceRouting] field value hash code is used to calculate the target space when the space is running in partitioned mode.
The field value hash code is used to calculate the target space when the space is running in partitioned mode.

Example:

[SpaceClass]
public class Employee {

  [SpaceId]
  [SpaceRouting]
  public long DepartmentId {set; get}

}
Learn more

SpaceProperty

Syntax [SpaceProperty(NullValue= )]
Argument nullValue
Default null
Description Specifies that a property value be treated as null when the object is written to the space and no value is assigned to the attribute. (where -1 functions as a null value in case of an int)

Example:

[SpaceClass]
public class Employee {

  [SpaceProperty(NullValue="-1")]
  public int Age {set; get;}
}

}

SpaceIndex

Syntax [SpaceIndex(Type=)]
Argument SpaceIndexType
Description Querying indexed fields speeds up read and take operations. The [SpaceIndex] annotation should be used to specify an indexed field.

Example:

[SpaceClass]
public class User {
    [SpaceIndex(Type = SpaceIndexType.Basic)]
    public String Name {set; get;}

    [SpaceIndex(Type = SpaceIndexType.Extended)]
    public double Balance{set; get;}
}
Learn more

Unique Index

Syntax [SpaceIndex(Type=, Unique = )]
Argument SpaceIndexType
Description Unique constraints can be defined for an attribute or attributes of a space class.
Note The uniqueness is enforced per partition and not over the whole cluster.

Example:

[SpaceClass]
public class Person
{
    [SpaceIndex(Type=SpaceIndexType.Basic, Unique=true)]
    public String LastName{ get; set; }

}
Learn more

SpaceIndex Path

Syntax [SpaceIndex(Path = “attributeName”,Type = )]
Argument SpaceIndexType
Description The path() attribute represents the path of the indexed property within a nested object.

Example:

[SpaceClass]
public class Person {

   [SpaceIndex(Path = "SocialSecurity", Type = SpaceIndexType.Extended)]
   public Info PersonalInfo{ get; set; }
}

public class Info : Serializable {
    public String Name { get; set; }
    public Address Address{ get; set; }
    public Date Birthday { get; set; }
    public long SocialSecurity{ get; set; }
}

Learn more

SpaceVersion

Syntax [SpaceVersion]
Description This annotation is used for object versioning used for optimistic locking.
Note The attribute must be an int data type.

Example:

[SpaceClass]
public class Employee {

  [SpaceVersion]
  public int Version { get; set; }

}
Learn more

SpacePersist

Syntax [SpacePersist]
Description This specifies a getter method for holding the persistency mode of the object overriding the class level persist declaration. This field should be of the boolean data type.
If the persist class level annotation is true, all objects of this class type will be persisted into the underlying data store (Mirror, ExternalDataSource, Storage Adapter).
Note When using this option, you must have the space class level persist decoration specified.

Example:

[SpaceClass(Persist=true)
public class Employee {

  [SpacePersist]
  public Bool Persist{ get; set; }
}

SpaceExclude

Syntax [SpaceExclude]
Description When this annotation is specified the attribute is not written into the space.

Example:

[SpaceClass]
public class Employee {

  [SpaceExclude]
  public String MothersName{ get; set; }
}
Learn more

SpaceStorageType

Syntax [SpaceStorageType(StorageType= )]
Argument StorageType
Default StorageType.Object
Description This annotation is used to specify how the attribute is stored in the space.

Example:

[SpaceClass]
public class Message {

  [SpaceStorageType(storageType=StorageType.BINARY)]
  public String PayLoad{ get; set; }

}
Learn more

SpaceFifoGroupingProperty

Syntax [SpaceFifoGroupingProperty(Path = )]
Argument path
Description This annotation is used to define a space FIFO grouping property.
Note If defined, the TakeModifiers.FIFO_GROUPING_POLL or ReadModifiers.FIFO_GROUPING_POLL modifiers can be used to return all space entries that match the selection template in FIFO order. Different values of the FG property define groups of space entries that match each value. FIFO ordering exists within each group and not between different groups.

Example:

[SpaceClass]
public class FlightReservation
{
    [SpaceFifoGroupingProperty(Path = "FlightNumber")]
    public FlightInfo Info { get; set; }

}
Learn more

SpaceFifoGroupingIndex

Syntax [SpaceFifoGroupingIndex (Path= )
Description This annotation is used to define a space FIFO grouping Index.
Note This annotation can be declared on several properties in a class in order to assist in efficient traversal.
If defined, there must be a property in the class, marked with the [SpaceFifoGroupingProperty] annotation.
A compound index that contains this FIFO grouping index and the FIFO grouping property will be created.

Example:


[SpaceFifoGroupingIndex]
public State ProcessingState { get; set; }
[SpaceFifoGroupingIndex(Path = "Id")]
public Person Customer { get; set; }

Learn more

SpaceDynamicProperties

Syntax [SpaceDynamicProperties]
Description Allows adding properties freely to a class without worrying about the schema.

Example:

[SpaceClass]
public class Person {

    public String Name { get; set; }

    [SpaceDynamicProperties]
    public DocumentProperties ExtraInfo { get; set; }
}
Learn more

Alias Name

Syntax [AliasName=]
Description In some cases, usually in interoperability scenarios, you may need to map your C# properties to different names in the Space. You can do that using the AliasName property on [SpaceProperty].
Note When using space SqlQuery on an object with properties which are aliased, the query text needs to use the aliased property names. For more information about SqlQuery, see GigaSpaces.NET - Sql Query.

Example:

[SpaceClass]
public class Person {

 [SpaceProperty(AliasName="firstName")]
 public String FirstName {set; get;}

}
Learn more