2010-03-17 41 views
0

我有兩個實體:EXAM和EXAM_NORMAL。如何保持秩序

考試

@Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long id; 
    private String name; 
    private String codeName; 
    @Enumerated(EnumType.STRING) 
    private ExamType examType; 
    @ManyToOne 
    private Category category; 
    @OneToMany(mappedBy="id",cascade=CascadeType.PERSIST) 
    @OrderBy("id") 
    private List<Exam_Normal> exam_Normal; 

EXAM_NORMAL

@Id 
    private Long item; 
    @Id 
    @ManyToOne 
    private Exam id; 
    @Enumerated(EnumType.STRING) 
    private Gender gender; 
    private Integer age_month_from; 
    private Integer age_month_to; 

的問題是,如果我把EXAM_NORMAL名單在考試類,如果我嘗試堅持(考試),因爲它會嘗試,我得到一個錯誤首先堅持EXAM_NORMAL,但它不能夠,因爲EXAM的主鍵缺失,因爲它沒有被保留...

有沒有什麼辦法來定義順序?或者我應該設置null列表,堅持,然後再次設置列表?

謝謝:)

回答

1

也有一些是不對您的註釋(這就是爲什麼JPA提供者未按照正確的順序執行查詢)。

爲什麼你在「Exam_Normal」中有兩個@Id(這是BTW不是用Java命名類的非常標準的方法)?另外,爲什麼你沒有任何@GeneratedValue?也許先解決這個問題。

如果這不起作用,請稍微改進您的問題,展示更多代碼(以及創建要堅持實體的部分),改進格式。這會增加你獲得答案的機會。在目前的狀態下,複製需要花費太多的時間/精力。