【问题标题】:Name in @OrderColumn annotation@OrderColumn 注释中的名称
【发布时间】:2017-09-15 07:37:58
【问题描述】:

总的来说,我是 Spring 和 Java 中的 Web 开发的新手。 我阅读了 Hibernate/JPA 2.0 文档,我知道在注释中 @OrderColumn 有一个参数name@OrderColumn(name = "name_of_the_column_that_we_would_like_to_order")我们的收藏。

但是,我还看到了一些其他名称 - 例如posnbr。我猜这些建议应该按表中的位置或按数字(nbr)或按 ID 或其他东西排序,不幸的是我找不到确切的答案,只有一些没有数据库示例的示例。

编辑:另外,如果有任何其他类似于此 posnbr 的示例,很高兴分享。我猜 nbrpos 是一些保留字,jpa 知道它应该如何接收和订购数据。

EDIT2

@Entity

@Table(name = "问题") 公共课问题{

/**
 * serialVersionUID
 */
private static final long serialVersionUID = -7677167590736866885L;

/**
 * Content of the question
 */
@Column(nullable = false, length = 255)
@Pattern(regexp = "^(?=\\s*\\S).*$")
private String content;

/**
 * Possible answers to the question
 */
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "question_answer", joinColumns = @JoinColumn(name = 
"question_id"))
@OrderColumn(name = "nbr")
@Valid
private List<Answer> answers;

/**
 * Category of the question
 */
@ManyToOne(optional = true)
@JoinColumn(name = "category_id", nullable = true)
private Category category;

注意这部分:

/**
 * Possible answers to the question
 */
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "question_answer", joinColumns = @JoinColumn(name = 
"question_id"))
@OrderColumn(name = "nbr")
@Valid
private List<Answer> answers;

但是,在基础中没有名为 nbr 的列。

这是问题表的图片

这是答案表的图片

category_id是外键,本题所属类别的ID。

【问题讨论】:

  • 和“答案”是什么?一个实体?任何老班?订单列由您的 JPA 提供商生成。 “question_answer”表在哪里?包含列表的那个!!!
  • Answer 显然是一个实体。没有 question_answer 表,因为它不是 ManyToMany 关系。
  • 如果某物是一个实体,那么你不能使用@ElementCollection(显然),你可以使用@OneToMany@ManyToMany(和@JoinTable而不是@CollectionTable)。是的,因为您在元数据中指定了该表!
  • 答案是一个实体。它在db中有自己的表,但它不是独立的,它是@Embeddable,因为如果没有它所属的问题,答案就不存在。
  • 无论哪种方式,JOIN TABLE 都存在,因为那是元素嵌入的表。 @Embeddable 没有自己的表

标签: java spring hibernate jpa spring-data-jpa


【解决方案1】:
@OrderColumn(name="MY_ORDER_COLUMN")
List myList;

将在连接表(如果通过连接表对 List 字段建模)或元素表中创建名称为 MY_ORDER_COLUMN 的排序列。

这个名字没有秘密值,它只是what you want to call the column@OrderColumn 将包含元素 0、1、2、...等位置的整数值

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多