Enumerated types are declared using the ENUM()
statement. You must declare the acceptable enumeration values
when you use this statement.
To define a simple two-field table where the primary key is a UID and the second field contains an enum, you use the following script:
CREATE TABLE myTable (
uid INTEGER,
myEnum ENUM (Apple,Pears,Oranges),
PRIMARY KEY (uid)
)
CHECK constraints are not supported for
enumerated fields.
DEFAULT and NOT NULL
constraints are supported for enumerated fields. See
DEFAULT
for more information.
To write the enum, use
Row.putEnum(). If the enumeration
value that you use with this method does not match a value
defined on the -enum-values parameter during
table definition, an IllegalArgumentException
is thrown.
TableAPI tableH = kvstore.getTableAPI();
Table myTable = tableH.getTable("myTable");
Row row = myTable.createRow();
row.put("uid", 12345);
row.putEnum("myEnum", "Pears");
tableH.put(row, null, null);
To read the enum, use
Row.get().asEnum(). This returns a
EnumValue class instance. You can then
use EnumValue.get() to retrieve the
stored enum value's name as a string. Alternatively, you can
use EnumValue.getIndex() to retrieve
the stored value's index position.
For example:
TableAPI tableH = kvstore.getTableAPI();
Table myTable = tableH.getTable("myTable");
/* Create a primary key for user id 12345 and get a row */
PrimaryKey key = myTable.createPrimaryKey();
key.put("uid", 12345);
Row row = tableH.get(key, null);
EnumValue ev = row.get("testEnum").asEnum();
System.out.println("enum as string: " +
ev.get()); // returns "Pears"
System.out.println("enum index: " +
ev.getIndex()); // returns '1'