当前位置: 首页 > 知识库问答 >
问题:

用oneToMany关系连接两个JPA实体

施默
2023-03-14

我有两个词A,B。在这个词中A是父词,有下面的表结构。

A1-->Acolumn

甚至我也尝试过使用普通连接。PLS让我知道我错过了什么。

我使用@query来指定query。选择a From TableA a LEFT OUTER JOIN FETCH a.tableAcollection p,其中a.tableacolum=?1和p.tablebcolumn<>p.tablebcolumn。

@Entity
@Table(name = "USER", schema = "USER_PROFILE")
public class User implements java.io.Serializable {

private BigDecimal userId;
private String firstNm;
private String lastNm;
private String userIndex;
private Set<UserPhone> userPhones = new HashSet<UserPhone>(0);

public User(){
}

public User(BigDecimal userId,String firstNm,String lastNm){
this.userId=userId;
this.firstNm=firstNm;
this.lastNm=lastNm;
}

public User(BigDecimal userId,String firstNm,String lastNm,Set<UserPhone> userPhones){
this.userId=userId;
this.firstNm=firstNm;
this.lastNm=lastNm;
this.userPhones=userPhones;
}

@Id
@Column(name = "USER_ID", unique = true, nullable = false, precision = 22, scale = 0)
public BigDecimal userId() {
 return this.userId;
    }

public void setuserId(BigDecimal userId) {
        this.userId = userId;
    }


@Column(name = "FIRST_NM", nullable = false, length=50)
public String firstNm() {
 return this.firstNm;
    }

public void setfirstNm(String firstNm) {
        this.firstNm = firstNm;
    }

@Column(name = "LAST_NM", nullable = false, length=50 )
public String lastNm() {
 return this.lastNm;
    }

public void setlastNm(String lastNm) {
        this.lastNm = lastNm;
    }

@Column(name = "USER_INDEX", nullable = false, length=50 )
public String userIndex() {
 return this.userIndex;
    }

public void setUserIndex(String userIndex) {
        this.userIndex = userIndex;
    }

@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
public Set<UserPhone> getuserPhones() {
    return this.userPhones;
    }

public void setUserPhones(Set<UserPhone> userPhones) {
    this.userPhones = userPhones;
    }

}



@Entity
@Table(name = "USER_PHONE", schema = "USER_PROFILE")
public class UserPhone implements java.io.Serializable {

private BigDecimal userPhoneId;
private String city;
private String State;
private User user;

public UserPhone(){
}

public UserPhone(BigDecimal userPhoneId){
this.userPhoneId = userPhoneId;
}

public UserPhone(BigDecimal userPhoneId,String city,String State,User user){
this.userPhoneId = userPhoneId;
this.city = city;
this.State = State;
this.user = user;
}

@Id
@Column(name = "USER_PHONE_ID", unique = true, nullable = false, precision = 22, scale = 0)
public BigDecimal userPhoneId() {
 return this.userPhoneId;
    }

public void setUserPhoneId(BigDecimal userPhoneId) {
        this.userPhoneId = userPhoneId;
    }

@Column(name = "CITY", nullable = false, length=50 )
public String city() {
 return this.city;
    }

public void setCity(String city) {
        this.city = city;
    }

@Column(name = "STATE", nullable = false, length=50 )
public String state() {
 return this.state;
    }

public void setState(String state) {
        this.state = state;
    }

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "USER_ID")
public User getUser() {
        return this.user;
    }

public void setUser(User user) {
        this.user = user;
    }

}

@QUERY("Select a from User a LEFT OUTER JOIN FETCH a.userPhones p where a.userIndex =?1 and p.city<>p.state")

共有1个答案

狄冠宇
2023-03-14

为什么不通过将IDE连接到数据库,将数据库表生成为POJO呢?您可以在IDE中创建一个JPA项目并连接到您的DB,它将询问列之间的关系,您可以在这里提到它,它将为您创建所需的POJO。

 类似资料:
  • 我有三个班,站点,GoupIP和IP 一个站点有一个或多个抱怨。GroupIP有一个或多个IP。 代码如下: 地点 群居 IP 在GroupIp课堂上,我得到: 在属性“ips”中,“映射者”值“groupip”无法解析为目标实体上的属性。 我的代码出了什么问题??

  • 我正在努力使用jpa Crudepository接口连接两个实体模型。我不知道如何映射两个实体模型并在@query注释中编写查询。这些是我的实体类。我想执行这个查询“从taxi\u driver\u映射中选择dppd.payment\u plan\u id,dppd.attribute\u value,dppd.attribute\u id作为tdm加入driver\u payment\u pla

  • 我试图创建一个包含问题的SQL关系,每个问题可以有一个或多个备选项,但当我从REST API调用它时,看看发生了什么:REST调用 以下是我的问题和备选模式: 模型

  • 我一直试图将一个实体添加到数据库中,该实体与另一个实体有OneTo许多关系,但当我插入该实体时,它说无法插入id,因为它是null。 我已经映射了这样的父子类: 子实体: 我的json长这样: 这是hibernate抛出的错误: 错误Msg=ORA-01400:无法将NULL插入(“DQISAPPS”。“目录\备注”。“目录\ ID”) 在甲骨文。jdbc。驾驶员t4cttiore11。proce

  • 我有2个实体(我删除了无用的字段): 而且 这似乎符合我的情况(也是我当前的实现),但它不起作用。 我得到以下错误消息: 来自MySQL: 临时解决方案是从存储库中检索所有相应的权限(按permissionName搜索)。那么保存效果很好。逻辑上是正确的,但我希望有一个更简单的程序...

  • 我有一个用户实体和一个宠物实体。在用户和宠物之间没有“一个多人”、“许多人”或其他。原因是每个用户可能有数千只宠物(至少在本例中是这样)。由于我不想急于加载它(速度太慢),也不想延迟加载(导致延迟初始化异常……而且我不想使用视图中打开的过滤器),所以我在用户存储库中创建了这样一个名称的方法(原因是我想有机会只返回关系属性的子集。我不想要用户的所有宠物: <代码>getPetsForUser(最终用