我正在嘗試在類別和產品類別之間建立關系。我認為多對多關系是最合適的。但是,當我運行應用程式時出現org.hibernate.MappingException: property-ref [_com_eCommerce_ecommerce_model_Product_listOfCategories] not found on entity [com.eCommerce.ecommerce.model.Product] 錯誤。可能是什么問題呢 ?
這是我的產品課。
package com.eCommerce.ecommerce.model;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@NoArgsConstructor
@Entity
@Getter
@Setter
@Table(name="Product")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int productId;
private int stockNumber;
@ManyToMany
@JoinTable(name = "products_categories",
joinColumns = {
@JoinColumn(name = "product",referencedColumnName = "productId",nullable = false,updatable = false)
},
inverseJoinColumns = {
@JoinColumn(name = "category",referencedColumnName = "categoryName",nullable = false,updatable = false)
})
Set<Category> listOfCategories = new HashSet<>();
}
類別類
package com.eCommerce.ecommerce.model;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@Data
@NoArgsConstructor
@Entity
@Table(name = "Category")
public class Category {
private int categoryParentNumber;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int categoryId;
private String categoryName;
@ManyToMany(mappedBy = "listOfCategories",fetch = FetchType.LAZY)
private Set<Product> listOfProducts = new HashSet<>();
}
uj5u.com熱心網友回復:
問題是列命名。
列名不是productId它是product_id,并且要能夠使用referencedColumnName你必須使用 @Column(name = "product_id")命名。
還參考的列必須是@Id并且 categoryName 不是@Id。
作業示例:
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "product_id", nullable = false)
private int productId;
private int stockNumber;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(
name = "products_categories_j",
joinColumns = {
@JoinColumn(name = "product_id", referencedColumnName = "product_id", nullable = false,updatable = false)
},
inverseJoinColumns = { @JoinColumn(name = "category_id", referencedColumnName = "category_id", nullable = false, updatable = false) }
)
private Set<Category> listOfCategories = new HashSet<>();
}
@Entity
public class Category {
private int categoryParentNumber;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "category_id", nullable = false)
private int categoryId;
@Column(name = "category_name", nullable = false)
private String categoryName;
@ManyToMany(mappedBy = "listOfCategories", fetch = FetchType.LAZY)
private Set<Product> listOfProducts = new HashSet<>();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528575.html
標籤:弹簧靴休眠
