2009-08-29 70 views
2

是否可以在google-app-engine中使用約束條件?它似乎不工作... http://www.datanucleus.org/products/accessplatform_1_1/jpa/orm/constr ...谷歌應用程序引擎中的約束?

屬性編碼系統和代碼應該是唯一的。是否有 解決方法?

@Entity 
@Table(uniqueConstraints = { 
    @UniqueConstraint(columnNames = { "codingSystem", "code" }) }) 
public class ArticleCode { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Key id; 

    private String codingSystem; 

    private String code; 

感謝, 拉爾夫

回答

2

概括地說,不,他們不是。基礎數據存儲實現不支持全局事務,因此強制實施任意唯一性約束並不現實。

解決方法是使唯一組件成爲密鑰名稱的一部分。

2

非常感謝,它工作正常。

這是我的新代碼。

@Entity 公共類ArticleCode {

@Id 
private Key id; 

@Column(name="codingSystem") 
private String codingSystem; 

@Column(name="code") 
private String code; 

public ArticleCode(Key parent, String codingSystem, String code) { 
    this.id = KeyFactory.createKey(parent, ArticleCode.class.getSimpleName(), codingSystem + code); 
    this.codingSystem = codingSystem; 
    this.code = code; 
}