摘要:跑測試的時候卻拋出了異常。大體的意思就是注解異常,注解不能應用在的屬性上。而在外鍵之上用一個不適用于其的注解,當然報錯啦。而注解才是官方為我們提供的為外鍵添加配置的注解。學科類別設置學科類別字段不能為空將修改為,測試通過。
@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
摘要:查詢照樣寫就行,如下參考問題七中關于多表連接查詢和返回值集合中對象問題錯誤的查詢語句釋放分析原來是查詢出來的字段并不能自動轉換為對象。參考問題八原因原生的語句中返回值為,而語句中的返回值位型的,網上說的主要是兼容而做的。 首先奉上Hibernate3.2 API地址:http://docs.jboss.org/hiberna...Hibernate4.3 API地址:http://do...
摘要:新建計量單位類別測試保存這里我們調用了方法,但是并沒有提示我們需要捕獲異常,但是并不代表這個方法不拋出異常,可以拋出非檢查的或其派生的異常。基礎測試數據準備測試保存,期待拋出異常斷言捕獲異常為真運行測試,通過。 白盒測試 白盒測試,要求對代碼中的每行代碼至少覆蓋一次。 @ApiModelProperty(學科類別) @ManyToOne // 設置學科類別字段不能為空 @JoinCol...
摘要:關聯關系的關聯關系定義上,感覺并不是很靈活,姿勢也比較難找。如,定義在關聯關系上的參數可以設置級聯的相關東西。因為序列化會涉及到實體類關聯對象的獲取,會觸發所有的關聯關系。 接(4) - Database 系列. Java Persistence API,可以理解就是 Java 一個持久化標準或規范,Spring Data JPA 是對它的實現。并且提供多個 JPA 廠商適配,如 Hi...
摘要:前言首先聲明,這是一篇轉發博客,不屬于原創。關系映射有下面幾種類型一對一外鍵關聯映射單向一對一外鍵關聯,使用,并設置了級聯操作。設置了外鍵的名稱為數據庫字段名,如果不設置,則默認為另一類的屬性名,外鍵的值是唯一的。 前言 首先聲明,這是一篇轉發博客,不屬于原創。但是感覺很有用,所以在本人的博客中記錄下來。 Hibernate Annotation關系映射有下面幾種類型: 一對一...
閱讀 3344·2021-11-22 15:22
閱讀 2867·2021-10-12 10:12
閱讀 2162·2021-08-21 14:10
閱讀 3831·2021-08-19 11:13
閱讀 2849·2019-08-30 15:43
閱讀 3230·2019-08-29 16:52
閱讀 446·2019-08-29 16:41
閱讀 1438·2019-08-29 12:53