使用列名获取实体中的字段名

时间:2019-07-18 07:42:37

标签: spring spring-boot spring-data-jpa jpql

有什么方法可以使用列名称获取实体中的字段名称。

@Table(name = "ESTABLISHMENT")
public class Establishment implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "EST_CODE")
    private Long code;


    @Column(name = "W_CODE")
    private Long wCode;

}

//服务

我有W_CODE名称,有什么方法可以获取实体中的字段名称。这里是它的wCode。 我想用它来创建自定义JPQL查询。

2 个答案:

答案 0 :(得分:1)

您可以解析列注释:

for (Field field : entity.getClass().getDeclaredFields()) {
   Column column = field.getAnnotation(Column.class);
   if (column != null) {
      columnNames.add(column.name());
   }
}

答案 1 :(得分:0)

您可以使用实体或模型获取列名称列表。我们需要的是onSelect = (newreport) => { this.setState({ report: newreport }) console.log("Parameter: ", newreport) console.log("State: ", this.state.report) return this.state.report; } render(){ return( <Buttons selectReport={this.onSelect("value")} ) ,应该在您的实体中使用。您将获得在@Column中指定的所有详细信息。尽管可以定义所有参数,但所有参数都是可选

  

@Column(name,columnDefinition,可插入,长度,可为空,   精度,比例尺,表格,唯一性,可更新)

我们可以获取@Column (在一般ModelName.class.getDeclaredFields()中)中在Entity中声明的所有字段。得到所有字段后,我们可以使用User.class.getDeclaredFields()获取特定的列,我们还可以获取在field.getAnnotation(Column.class)中指定的所有详细信息,如下所示

@Column

根据要求创建端点或方法

Columns: @javax.persistence.Column(nullable=false, precision=2, unique=true, name=id, length=2, scale=1, updatable=false, columnDefinition=, table=, insertable=true)
Columns: @javax.persistence.Column(nullable=true, precision=0, unique=false, name=client_id, length=255, scale=0, updatable=true, columnDefinition=, table=, insertable=true)
Columns: @javax.persistence.Column(nullable=true, precision=0, unique=false, name=firstname, length=255, scale=0, updatable=true, columnDefinition=, table=, insertable=true)
Columns: @javax.persistence.Column(nullable=true, precision=0, unique=false, name=lastname, length=255, scale=0, updatable=true, columnDefinition=, table=, insertable=true)