gpt4 book ai didi

Hibernate 映射异常 : Could not determine type for columns: [org. hibernate.mapping.Column]

转载 作者:行者123 更新时间:2023-12-04 00:01:49 24 4
gpt4 key购买 nike

我想在两个表 BookStock 和 Book 之间进行一对多映射,但出现以下异常

Exception in thread "main" org.hibernate.MappingException: Could not determine type for: java.util.List, at table: book_stock, for columns: [org.hibernate.mapping.Column(books)]

bookStock 实体是
@Entity
@Table(name = "book_stock")
public class BookStock {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private Long stock;
private List<Book> books;

@Column(name = "id")
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

@Column(name = "stock")
public Long getStock() {
return stock;
}

public void setStock(Long stock) {
this.stock = stock;
}

@OneToMany
@PrimaryKeyJoinColumn
public List<Book> getBooks() {
return books;
}

public void setBooks(List<Book> books) {
this.books = books;
}
}

图书实体是
@Entity
@Table(name = "book")
public class Book {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String bookName;
private BigDecimal price;
private BookStock bookStock;

@Column(name = "id")
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

@Column(name = "book_name")
public String getBookName() {
return bookName;
}

public void setBookName(String bookName) {
this.bookName = bookName;
}

@Column(name = "price")
public BigDecimal getPrice() {
return price;
}

public void setPrice(BigDecimal price) {
this.price = price;
}

@ManyToOne
public BookStock getBookStock() {
return bookStock;
}

public void setBookStock(BookStock bookStock) {
this.bookStock = bookStock;
}
}

示例类是
public class transactionsExample {

public static void main(String[] args) {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
configuration.addAnnotatedClass(Book.class);
configuration.addAnnotatedClass(BookStock.class);
configuration.setNamingStrategy(ImprovedNamingStrategy.INSTANCE);
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();

session.beginTransaction();
Book book1 = EntityBuilder.book().withISBN("21234").withName("Anario").withPrice(25.90).purchase();
session.save(book1);
session.getTransaction().commit();
}
}

这种关系出了什么问题?

最佳答案

它不会找到您的所有注释,因为您正在注释字段和方法。您只需使用一种策略。在您的情况下,首先看到 id 字段中的 @Id 注释,这就是 get-methods 中的注释不起作用的原因。结果 hibernate 正确地假设

List<Book> books;

未映射。如果您还将注释从 id-field 移动到 getId-method(对于两个实体),问题就解决了。

关于修复其他映射问题,请参阅下面的评论。

关于Hibernate 映射异常 : Could not determine type for columns: [org. hibernate.mapping.Column],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com