人
package org.example;
import org.example.model.Item;
import org.example.model.Person;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import java.time.Period;
import java.util.List;
public class App {
public static void main(String[] args) {
Configuration configuration = new Configuration()
.addAnnotatedClass(Period.class).addAnnotatedClass(Item.class);
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
try {
session.beginTransaction();
Person person = session.get(Person.class, 1);
System.out.println(person);
List<Item> items = person.getItems();
System.out.println(items);
session.getTransaction().commit();
} finally {
sessionFactory.close();
}
}
}
项目
package org.example.model;
import jakarta.persistence.*;
@Entity
@Table(name = "item")
public class Item {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "item_name")
String itemName;
@ManyToOne
@JoinColumn(name = "person_id", referencedColumnName = "id")
private Person owner;
public Item() {
}
public Item(String itemName) {
this.itemName = itemName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
@Override
public String toString() {
return "Item{" +
"id=" + id +
", itemName='" + itemName + '\'' +
'}';
}
}
应用程序
package org.example;
import org.example.model.Item;
import org.example.model.Person;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import java.time.Period;
import java.util.List;
public class App {
public static void main(String[] args) {
Configuration configuration = new Configuration()
.addAnnotatedClass(Period.class).addAnnotatedClass(Item.class);
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
try {
session.beginTransaction();
Person person = session.get(Person.class, 1);
System.out.println(person);
List<Item> items = person.getItems();
System.out.println(items);
session.getTransaction().commit();
} finally {
sessionFactory.close();
}
}
}
异常
Exception in thread "main" org.hibernate.AnnotationException: Association 'org.example.model.Item.owner' targets an unknown entity named 'org.example.model.Person'
at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:97)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processEndOfQueue(InFlightMetadataCollectorImpl.java:1879)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processFkSecondPassesInOrder(InFlightMetadataCollectorImpl.java:1826)
at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1733)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:300)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:97)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:402)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:90)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:735)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:773)
at org.example.App.main(App.java:23)
您在附加的 Person 类中犯了一个错误。您附加了一个应用程序类。