gpt4 book ai didi

java - Hibernate 帮我写查询

转载 作者:行者123 更新时间:2023-12-02 00:34:58 24 4
gpt4 key购买 nike

我正在用 java 制作一个电子邮件客户端。当用户创建带有附件(文档)的邮件时,它将有关电子邮件消息的所有数据保存在数据库中,但保存在多个表中,例如 Document_table.title 中的附件标题、msgnumber.num 中的消息数量、msgnumber.date 中的日期、发件人姓名在Official_Person.name 和OfficialPerson.secondname 中。我如何检索所有这些数据并显示它(我为此使用 Jtable)?我知道如何获取数据(如果数据保存在一个表中而不是多个表中)。请帮助我。

一种格式有许多文档网。

文件:

@Entity
@Table(name="DOCUMENT"
,schema="Default"
)
public class Document implements java.io.Serializable {

@ManyToOne
@JoinColumn(name = "FormatID")
private Format format;
@Id
@Column(name = "DocumentID", unique = true, nullable = false)
private int documentId;

格式:

@Entity
@Table(name="FORMAT"
,schema="Default"
)
public class Format implements java.io.Serializable {


@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "FormatID")
private Set<Document> documents = new HashSet();

@Id
@Column(name = "FormatID", unique = true, nullable = false)
private int formatId;

格式.hbm

<hibernate-mapping>
<class name="entity2.Format" table="FORMAT">
<id name="formatId" type="int">
<column name="FormatID" length="2000000000" />
<generator class="native" />
</id>
<set name="documents" table="DOCUMENT"
inverse="true" lazy="true" fetch="select">
<key>
<column name="FormatID" not-null="true" />
</key>
<one-to-many class="entity2.Document" />
</set>

文档.hbm

<hibernate-mapping>
<class name="entity2.Document" table="DOCUMENT">
<id name="documentId" type="int">
<column name="DocumentID" length="2000000000" />
<generator class="native" />
</id>

<many-to-one name="format" class="entity2.Format" fetch="select">
<column name="FormatID" not-null="true" />
</many-to-one>

我想检索格式 1 的所有文档:

Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Format f = (Format) session.get(Format.class, 1);
System.out.println(f.getName());
System.out.println(f.getDocuments());

文件为空?我哪里错了?

最佳答案

如果定义类之间的关系,例如:

class Person {    
@OneToMany(cascade=CascadeType.ALL,
fetch= FetchType.EAGER)
private Set<Email> emails = new HashSet();

// getters/setters and some other attributes are not shown

当您从数据库中读取一个对象时,您将自动获得另一个与其有关系的对象。

Session s = HibernateUtil.getSessionFactory().openSession();
Person p = (Person) s.get(Person.class, 1);
s.close();

System.out.println(p.getName());
System.out.println(p.getEmails());

以下是双向一对一关系的示例。

class Person {
@OneToOne(cascade=CascadeType.ALL)
private Address address;


class Address {
@OneToOne(mappedBy=”address”)
private Person person

关于java - Hibernate 帮我写查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039994/

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