gpt4 book ai didi

java - hibernate : Mapping two entities

转载 作者:行者123 更新时间:2023-11-29 07:25:42 25 4
gpt4 key购买 nike

我有一个关于基于表中映射的映射实体的问题。所以,我们是一个五人团队,在一个项目上工作,我们的一个队友似乎在相反方向的表之间添加映射,我将举两个例子让你理解我的意思。

我们有两个表 User 和 UserInfo。 UserInfo 有一个 user_id 作为外键。

1)我在hibernate中学到的Common Mapping。

在 User 和 UserInfo 实体中,我通常有这样的映射:

class User{
private int userId;
private String userName;

// getter and setters

}

class UserInfo{

private int userInfoId;
private String firstName;
private String lastName;

@OneToOne()
@JoinColumn(name="user_id")
private User user;

}

2) 这是我的同事做映射的方式:

class User{
private int userId;
private String userName;

@OneToOne(mappedBy="user")
@JoinColumn(name="user_id")
private UserInfo userInfo;

// getter and setters

}

class UserInfo{

private int userInfoId;
private String firstName;
private String lastName;

@OneToOne()
private User user;

}

他所做的与我从教程中学到的正好相反。它以某种方式工作正常,但我不确定这是否是映射两个实体的正确方法。请帮忙。

谢谢。

最佳答案

它们都应该在数据库中创建完全相同的表,但是当您需要从 userInfo 调用用户或从用户调用 userInfo 时,第二种解决方案更好。

例如:

User user = ...
user.getUserInfo().getFirstName();

UserInfo info = ...
info.getUser().getUserName();

附言:在这篇文章中说,使用 @OneToOne 和 @MapsId 最有效 https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

关于java - hibernate : Mapping two entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53513945/

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