【问题标题】:JPA: @OrderColumn and visible state of an entity?JPA:@OrderColumn 和实体的可见状态?
【发布时间】:2012-04-07 12:15:46
【问题描述】:

这是一个后续问题:

Is @ManyToMany(mappedBy = ... ) + @OrderColumn supported by the JPA?

我指的是@OrderColumn Java 文档:

http://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html

那里的文本与 JPA 2 规范在 11.1.39 OrderColumn Annotation 部分中所写的相同。

“订单列作为实体状态的一部分不可见”是什么意思确切地?对此有很大的解释空间。

这是否意味着订单列不能是定义的任何 FK 和/或 PK 的一部分?还是仅不在 FK 中(允许 PK)?实体的状态包括什么? AFAIK JPA 规范没有定义。

谢谢

【问题讨论】:

    标签: java hibernate jpa jpa-2.0 eclipselink


    【解决方案1】:

    订单列不是实体类中的字段,因此它不可见(因此)。

    【讨论】:

    • 嗯,我已经知道的差不多了。那么,这是否有效地意味着,由于订单列总是在另一个表中,所以订单列不能是外键的一部分,外键将映射到声明关系字段的实体中?这是否意味着在另一个表中可以有这样的列 PK 而不是 FK?
    • 这样的列不是实体状态的一部分。所以它没有被映射为实体中的任何东西(PK、常规字段、FK 或其他)。它不能被映射。故事结束。
    • @Kawu,我认为这句话没有什么难理解的地方。实体中没有字段。显然,您可以通过访问所有者中的列表字段来获得列表中的位置(因此顺序)。这就是全部。清如白昼
    【解决方案2】:

    打开 JPA。请看这段代码,这是最好的理解方式

    //This is in the parent table
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "parentTable", fetch = FetchType.EAGER)
        @OrderColumn
        private ArrayList<child_class_type> childTable = new ArrayList<child_class_type>();
    
    //This is in the child table
    @ManyToOne(fetch = FetchType.EAGER, optional = false)
        private parentTableClass parentTable;
    

    这将得到一个有序列表(子表)。 :)

    约翰五世,上校

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多