2012-12-17 51 views
0

我在創建實體類中的對象時遇到了一些麻煩。我得到以下異常:如何在實體類中保存一個類?

java.lang.IllegalArgumentException: A: name.A is not a supported property type

這裏是一個小的代碼示例:

這是我的實體B類:

@Entity 
public class B {   
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Key key; 

    private ArrayList<A> token = new ArrayList<A>(); 

    public Profile() { 
     this.token.add(new Token(1)); 
     this.token.add(new Token(2)); 
     this.token.add(new Token(3)); 
     this.token.add(new Token(4)); 
    } 
} 

這是我的標準的A類:

public class A { 
    private Integer id = new Integer(0); 

    public A(int id) { 
     this.id = id; 
    } 
} 

我將類B保存在數據存儲中。我得到以下例外:

profile = new Profile(); 
em.persist(profile); 
em.close(); //Exception 

如果我評論類B中的令牌對象一切正常。我怎麼能在B中使用A類?

回答

0

我認爲問題在於A類不被識別爲要管理的實體。您可以在A類頂部使用以下注釋並查看。

@Embeddable 
public class A 
+0

好的。如果我把class A設置爲'@ Embeddable',我會得到以下錯誤:'包含一個持久對象,但該字段不允許cascade-persist!'我想,我必須設置關係,對吧?它是OneToMany嗎? – hofmeister

+0

是的,它是一對多的。您也可以將@Embedded放在B類列表的頂部。唯一的問題是,如果你連接一對多,你將不得不在你的A類實體上維護一個單獨的主鍵。 – dinukadev

+0

非常感謝! – hofmeister

相關問題