【问题标题】:How to persist in order如何坚持有序
【发布时间】:2010-03-17 01:10:49
【问题描述】:

我有两个实体: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 类中,如果我尝试持久化(EXAM),我会收到错误,因为它首先尝试持久化 EXAM_NORMAL 但它不能因为 EXAM 的主键丢失,因为它没有持久化...

有什么方法可以定义顺序吗?还是我应该设置null列表,坚持然后再设置列表?

谢谢:)

【问题讨论】:

    标签: java jpa persist


    【解决方案1】:

    您的注释有问题(这就是 JPA 提供程序未按正确顺序执行查询的原因)。

    为什么在“Exam_Normal”中有两个@Id(顺便说一句,在 Java 中命名一个类的方式不是很标准)?另外,你为什么没有@GeneratedValue?也许先解决这个问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      相关资源
      最近更新 更多