如何坚持秩序

时间:2010-03-17 01:10:49

标签: java jpa persist

我有两个实体:EXAM和EXAM_NORMAL。

EXAM

@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类中放置一个EXAM_NORMAL列表,如果我尝试保持(EXAM),我会收到一个错误,因为它首先尝试保留EXAM_NORMAL,但它不能因为EXAM的主键丢失,因为它没有坚持......

有没有办法定义订单?或者我应该设置null列表,坚持,然后再次设置列表?

感谢:)

1 个答案:

答案 0 :(得分:1)

您的注释有问题(这就是为什么JPA提供程序没有按正确的顺序执行查询)。

为什么在“Exam_Normal”中有两个@Id(BTW不是用Java命名类的非常标准的方法)?另外,为什么你没有@GeneratedValue?也许先解决这个问题。

如果这不起作用,请稍微改进一下您的问题,显示更多代码(以及创建要保留的实体的部分),改进格式。这会增加你获得答案的机会。在它的当前状态下,重建需要花费太多时间/精力。