坚持实体,除非它们已经存在?

时间:2014-09-17 14:45:32

标签: java jpa datanucleus

考虑以下JPA实体:

@Entity
class Entity {
    @Id
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Entity entity = new Entity();
entity.setName('foo');

在事务内部,我想实现以下目的:如果没有名称为entity的其他实体存在,则将实体foo保留到数据存储区,或者如果已存在则抛出异常名为Entity的实体foo

实现这一目标的最惯用/最佳方法是什么? (对于什么是值得的,我正在使用Data Engine进行AppNucleus'JPA实现。)

1 个答案:

答案 0 :(得分:2)

每当您创建一个明确指定密钥的新实体时,您必须检查数据存储区中是否已存在具有相同密钥的实体。

创建一个方法,如:

public Entity getEntityByName(String name) {
    // First try to load from datastore
    // If exists, return that
    // If doesn't exist, return a new instance
}

无论何时您想使用Enity,都可以通过此方法获取它。