国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

注解異常 @Column(s) not allowed on a @ManyToOne proper

jiekechoo / 1937人閱讀

摘要:跑測試的時候卻拋出了異常。大體的意思就是注解異常,注解不能應用在的屬性上。而在外鍵之上用一個不適用于其的注解,當然報錯啦。而注解才是官方為我們提供的為外鍵添加配置的注解。學科類別設置學科類別字段不能為空將修改為,測試通過。

@Column

計量單位類別中,要設置某個字段不能為空。

因為對Hibernate僅僅停留于了解階段,去慕課網學習了一下Hibernate的注解。

發現講師介紹的@Column注解有一項nullable(可否為空)屬性,默認為true,這里嘗試著添加該注解,并將nullable屬性設置為false,不可為空。

@ApiModelProperty("學科類別")
@ManyToOne
// 設置學科類別字段不能為空
@Column(nullable = false)
@JsonView({NoneJsonView.class,
        MeasurementUnitCategoryJsonView.getAllByDisciplineId.class})
private Discipline discipline;
異常

跑一下測試確保改這行代碼整座橋不會塌。跑測試的時候卻拋出了異常。

org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property: com.mengyunzhi.measurement.entity.MeasurementUnitCategory.discipline

大體的意思就是:注解異常,@Column注解不能應用在@ManyToOne的屬性上。

話不多說,直接谷歌。

解決方案

打開第一條:Use @JoinColumn instead of @Column。使用@JoinColumn而不是@Column

@Column(s) not allowed on a @ManyToOne property-StackOverflow

大體意思就是,因為加了一個@ManyToOne的注解,所以這個屬性就是外鍵。

package javax.persistence;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface Column {

    String name() default "";

    boolean unique() default false;

    boolean nullable() default true;

    boolean insertable() default true;

    boolean updatable() default true;

    String columnDefinition() default "";

    String table() default "";

    int length() default 255;

    int precision() default 0;

    int scale() default 0;
}
解釋

看一下@Column注解的源碼,我們看到這其中的屬性length等顯示不是外鍵應該有的屬性,所以推測@Column注解是用于數據表中的普通字段之上。

而在外鍵之上用一個不適用于其的注解,當然報錯啦。而@JoinColumn注解才是官方為我們提供的為外鍵添加配置的注解。

@ApiModelProperty("學科類別")
@ManyToOne
// 設置學科類別字段不能為空
@JoinColumn(nullable = false)
@JsonView({NoneJsonView.class,
        MeasurementUnitCategoryJsonView.getAllByDisciplineId.class})
private Discipline discipline;

@Column修改為@JoinColumn,測試通過。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69680.html

相關文章

  • 注解的奇妙之旅

    摘要:注解是棄用不再使用的意思。是處理源碼級別的注解,它會生成新的字節碼或其它文件。這個該怎么實現呢我們需要在啟動之后文件轉為字節碼文件之前,就需要生成對應的和方法,因為它只在編譯期有效。我們在啟動后,會根據注解,來創建相應的數據表。 導讀 模擬hibernate的注解,創建數據表的源碼地址:https://gitee.com/zbone/myanno 注解釋義 java開發人員對注解,應該...

    Markxu 評論0 收藏0
  • Hibernate問題集錦

    摘要:查詢照樣寫就行,如下參考問題七中關于多表連接查詢和返回值集合中對象問題錯誤的查詢語句釋放分析原來是查詢出來的字段并不能自動轉換為對象。參考問題八原因原生的語句中返回值為,而語句中的返回值位型的,網上說的主要是兼容而做的。 首先奉上Hibernate3.2 API地址:http://docs.jboss.org/hiberna...Hibernate4.3 API地址:http://do...

    niceforbear 評論0 收藏0
  • Spring 異常單元測試

    摘要:新建計量單位類別測試保存這里我們調用了方法,但是并沒有提示我們需要捕獲異常,但是并不代表這個方法不拋出異常,可以拋出非檢查的或其派生的異常。基礎測試數據準備測試保存,期待拋出異常斷言捕獲異常為真運行測試,通過。 白盒測試 白盒測試,要求對代碼中的每行代碼至少覆蓋一次。 @ApiModelProperty(學科類別) @ManyToOne // 設置學科類別字段不能為空 @JoinCol...

    tracymac7 評論0 收藏0
  • Spring Boot QuickStart (5) - Spring Data JPA

    摘要:關聯關系的關聯關系定義上,感覺并不是很靈活,姿勢也比較難找。如,定義在關聯關系上的參數可以設置級聯的相關東西。因為序列化會涉及到實體類關聯對象的獲取,會觸發所有的關聯關系。 接(4) - Database 系列. Java Persistence API,可以理解就是 Java 一個持久化標準或規范,Spring Data JPA 是對它的實現。并且提供多個 JPA 廠商適配,如 Hi...

    sutaking 評論0 收藏0
  • Hibernate映射關系

    摘要:前言首先聲明,這是一篇轉發博客,不屬于原創。關系映射有下面幾種類型一對一外鍵關聯映射單向一對一外鍵關聯,使用,并設置了級聯操作。設置了外鍵的名稱為數據庫字段名,如果不設置,則默認為另一類的屬性名,外鍵的值是唯一的。 前言 首先聲明,這是一篇轉發博客,不屬于原創。但是感覺很有用,所以在本人的博客中記錄下來。 Hibernate Annotation關系映射有下面幾種類型: 一對一...

    gougoujiang 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<