【问题标题】:Hibernate Query to join two table using JparepositoryHibernate Query 使用 Jparepository 连接两个表
【发布时间】:2017-09-24 00:08:00
【问题描述】:

大家好,我在使用 jparepository 使用 @query 连接两个表时遇到了一个小问题,但我遇到了错误。请帮我解决这个问题。

用户地址.java

package com.surya_spring.example.Model;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

@Entity
@Table(name = "user_address")
//@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class UserAddress implements Serializable {


/**
 * 
 */
private static final long serialVersionUID = -3570928575182329616L;


/*@ManyToMany(cascade = {CascadeType.ALL},fetch=FetchType.EAGER,mappedBy = "userAddress",targetEntity=UserData.class)*/

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="user_id")
private UserData userdata;


@Id
@Column(name = "addr_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long addrid;

@Column(name = "dr_no")
@NotNull
private String doorNo;


@Column(name = "strt_name")
@NotNull
private String streetName;

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

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



/*@OneToOne(cascade=CascadeType.ALL)
@Column(name="user_id")*/
public UserData getUserdata() {
    return userdata;
}

public void setUserdata(UserData userdata) {
    this.userdata = userdata;
}

public Long getAddrid() {
    return addrid;
}

public void setAddrid(Long addrid) {
    this.addrid = addrid;
}

public String getDoorNo() {
    return doorNo;
}

public void setDoorNo(String doorNo) {
    this.doorNo = doorNo;
}

public String getStreetName() {
    return streetName;
}

public void setStreetName(String streetName) {
    this.streetName = streetName;
}

public String getCity() {
    return city;
}

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

public String getCountry() {
    return country;
}

public void setCountry(String country) {
    this.country = country;
}

}

用户数据.java

package com.surya_spring.example.Model;
import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.NonNull;

@Entity
@Table(name = "user_data")
public class UserData implements Serializable{
/**
 * Serialization ID
 */
private static final long serialVersionUID = 8133309714576433031L;

/*@ManyToMany(targetEntity=UserAddress.class ,cascade= {CascadeType.ALL },fetch=FetchType.EAGER)
@JoinTable(name="userdata",joinColumns= @JoinColumn(name="userid"),inverseJoinColumns = @JoinColumn(name="userid"))
*/


@Id
@Column(name = "user_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userId;

@Column(name = "user_name")
@NonNull
private String userName;

@Column(name = "user_email")
@NonNull
private String userEmail;

public Long getUserId() {
    return userId;
}

public void setUserId(Long userId) {
    this.userId = userId;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getUserEmail() {
    return userEmail;
}

public void setUserEmail(String userEmail) {
    this.userEmail = userEmail;
}
}

存储库:

package com.surya_spring.example.Repository;


import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.surya_spring.example.Model.UserData;

public interface UserDataRepository extends JpaRepository<UserData, Long>{

@Query(" FROM UserData where userId= :id")
public List<UserData> findBySearchTerm(@Param("id") Long id);

}

任何人都让我知道加入这两个表的查询,以从 user_address where user_id=?加入 user_data 表

【问题讨论】:

标签: spring hibernate repository spring-data-jpa


【解决方案1】:

如果您想为用户获取城市,您可以这样做:

@Query("SELECT ua.city FROM UserAddress ua WHERE ua.userdata.userId = ?1")
String findCityByUserId(Long userId);

请注意,使用的是您的实体名称(如在您的 java 类中),而不是数据库中的表名!您不必自己进行连接,因为您可以使用域模型的属性来访问相关数据

【讨论】:

  • 感谢您的回答**快速排序**
猜你喜欢
  • 2019-10-30
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多