Our example's Inventory class is much like our Vendor class in that it is simply used to encapsulate data. However, in this case we want to be able to access objects two different ways: by product SKU and by product name.

In our data set, the product SKU is required to be unique, so we use that as the primary key. The product name, however, is not a unique value so we set this up as a secondary key.

The class appears as follows in our example:

package persist.gettingStarted;

import com.sleepycat.persist.model.Entity;
import com.sleepycat.persist.model.PrimaryKey;
import static com.sleepycat.persist.model.Relationship.*;
import com.sleepycat.persist.model.SecondaryKey;

public class Inventory {

    // Primary key is sku
    private String sku;

    // Secondary key is the itemName
    private String itemName;

    private String category;
    private String vendor;
    private int vendorInventory;
    private float vendorPrice;

    public void setSku(String data) {
        sku = data;

    public void setItemName(String data) {
        itemName = data;

    public void setCategory(String data) {
        category = data;

    public void setVendorInventory(int data) {
        vendorInventory = data;

    public void setVendor(String data) {
        vendor = data;

    public void setVendorPrice(float data) {
        vendorPrice = data;

    public String getSku() {
        return sku;

    public String getItemName() {
        return itemName;

    public String getCategory() {
        return category;

    public int getVendorInventory() {
        return vendorInventory;

    public String getVendor() {
        return vendor;

    public float getVendorPrice() {
        return vendorPrice;