gpt4 book ai didi

java - 使用注释左加入 hibernate

转载 作者:行者123 更新时间:2023-11-30 11:30:47 26 4
gpt4 key购买 nike

我有两个表如下

@Entity
@Table (name="booking_basic")
public class Booking_Basic {

@Id
@GeneratedValue
@Column (name="booking_id")
private int booking_id;
@GenericGenerator(name="foreign", strategy="foreign", parameters={@org.hibernate.annotations.Parameter(name="property", value="organizer_basic")})
@Column (name="org_id")
private int org_id;
@OneToOne(fetch=FetchType.EAGER, optional=true)
@PrimaryKeyJoinColumn
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
private Organizer_Basic organizer_basic;
....

另一个是

@Entity
@Table(name="organizer_basic")
public class Organizer_Basic
{

@Id
@GeneratedValue
@Column(name="org_id")
private int org_id;

@Column(name="name")
private String name;

@OneToOne(cascade={javax.persistence.CascadeType.ALL}, fetch=FetchType.LAZY, mappedBy="organizer_basic")
@JoinColumn(name="org_id")
private Booking_Basic booking_basic;
.....

现在我想根据预订 ID 获取所有组织者名称,如果 booking_basic 有 booking_id 1 和 org_id = 15,那么我想访问 org_id 为 15 的组织者名称。

        Session session = HibernateSessionFactory.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
Query query = session.createQuery("FROM Booking_Basic");
List<Booking_Basic> booking_basic = query.list();
for(Booking_Basic b : booking_basic)
System.out.print("Booking Type : " + b.getOrganizer_basic().getName());
}
transaction.commit();
}
catch (Exception e) {
e.printStackTrace();
transaction.rollback();
}

但是当我尝试运行它时,它给了我空指针异常。任何人有想法,请帮助我。

最佳答案

试试这个:

session.createQuery("FROM Booking_Basic as b left join b.organizer_basic as o");

关于java - 使用注释左加入 hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17592945/

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