2012-12-17 3 views
0

엔티티 클래스에서 객체를 만드는 데 약간의 문제가 있습니다.클래스를 엔티티 클래스에 저장하는 방법은 무엇입니까?

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

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

@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)); 
    } 
} 

이 내 표준 클래스입니다 : 이것은 내 엔티티 B 클래스는

입니다 : 여기

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

작은 코드 예제입니다 : 나는 다음과 같은 예외를 얻을

클래스 B를 데이터 저장소에 저장합니다. 다음 지점에서 예외가 발생합니다.

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

클래스 B의 토큰 개체에 주석 처리를하면 모든 것이 작동합니다. B에서 A 클래스를 어떻게 사용할 수 있습니까?

답변

0

클래스 A가 관리 대상으로 식별되지 않는다고 생각됩니다. A 급 상단에 다음과 같은 주석을 사용할 수 있습니까?

@Embeddable 
public class A 
+0

클래스 A를'@ Embeddable'으로 설정하면 다음과 같은 에러가 발생합니다 :'지속성이없는 지속성 오브젝트를 포함하고 있지만, 필드가 cascade-persist를 허용하지 않습니다! '라고 말하면, 관계를 설정해야합니다. OneToMany입니까? – hofmeister

+0

예 일대 다입니다. 또한 클래스 B의 목록 맨 위에 @Embedded을 넣을 수도 있습니다. 유일한 문제는 일대 다 연결로 연결하는 경우 클래스 A 엔티티에 별도의 기본 키를 유지해야한다는 것입니다. – dinukadev

+0

대단히 감사합니다! – hofmeister

관련 문제