2017-10-05 15 views
0

我想在使用百里酚模板html文件的視圖上連接兩個表後顯示用戶數據。我的資料庫查詢註釋使用百里酚在窗體中顯示詳細信息時出現表達式錯誤

@Query("SELECT u.username,p.privi_name FROM Users u inner join u.priviJoin p") 
List<Users> findByUsername(); 

我的控制器,

@RequestMapping(value = "/joinResult", method = RequestMethod.GET) 
public ModelAndView joinResultShow(Model model) 
    { 
     List<Users> use = new ArrayList<Users>(); 
     use = (List<Users>) userRepo.findByUsername(); 
     model.addAttribute("joinData",use); 
     ModelAndView viewObj = new ModelAndView("fleethome"); 
     return viewObj; 
    } 

而且我的HTML文件fleethome是,

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org"> 
    <body> 
    <div>   
     <span th:text="${joinData.username}"> 
     </span> 
     <span th:text="${joinData.privi_name}"> 
     </span> 
    </div> 
</body> 
</html> 

我的用戶類,

@Entity 
@Table(name = "users") 
public class Users implements Serializable{ 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
private Integer id; 

@Column(name = "username") 
public String username; 

@Column(name = "password") 
public String password; 

@Column(name = "privid") 
public Integer privid; 

@OneToOne() 
@JoinColumn(name="join_privillage") 
private Privillages priviJoin; 


public Integer getId() { 
    return id; 
} 

public void setId(Integer id) { 
    this.id = id; 
} 

public String getUsername() { 
    return username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

public Integer getPrivid() { 
    return privid; 
} 

public void setPrivid(Integer privid) { 
    this.privid = privid; 
} 

public Privillages getPriviJoin() { 
    return priviJoin; 
} 

public void setPriviJoin(Privillages priviJoin) { 
    this.priviJoin = priviJoin; 
} 



public Users() { 
} 

public Users(String username, String password, Integer privid) { 
    this.username = username; 
    this.password = password; 
    this.privid = privid; 
} 
@Override 
public String toString() { 
    return String.format("Users[id=%d, username='%s', password='%s']", id, 
username, password); 
} 

} 

我的第二個加入類Pr ivillages是,

@Entity 
@Table(name = "privillages") 
public class Privillages implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
public Integer id; 

@Column(name = "privid") 
public Integer privid; 

@Column(name = "privi_name") 
public String privi_name; 

@OneToOne(fetch=FetchType.LAZY, mappedBy="priviJoin") 
public Users user; 


public Integer getId() { 
    return id; 
} 

public void setId(Integer id) { 
    this.id = id; 
} 

public Integer getPrivid() { 
    return privid; 
} 

public void setPrivid(Integer privid) { 
    this.privid = privid; 
} 

public String getPrivi_name() { 
    return privi_name; 
} 

public void setPrivi_name(String privi_name) { 
    this.privi_name = privi_name; 
} 

public Users getUser() { 
    return user; 
} 

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

public Privillages() { 
} 

public Privillages(Integer privid, String privi_name) { 
    this.privid = privid; 
    this.privi_name = privi_name; 

} 
} 

並顯示錯誤,如「有一個意外的錯誤(類型=內部服務器錯誤,狀態= 500)。 異常評估SpringEL的表情:「joinData.username」(fleethome:54)。?」我需要做什麼來解決這個

回答

1

你的模型屬性是List.So的類型,你應該使用日:每個在模板遍歷用戶列表:你可以試試這個:

<div th:each= "user: ${joinData}"> 
    <span th:text="${user.username}"> 
     </span> 
     <span th:text="${user.privi_name}"> 
     </span> 
</div> 

解決方案:

@Query("SELECT * FROM Users u ") 
List<Users> findByUsername(); 

和顯示,如:

<div th:each= "user: ${joinData}"> 
     <span th:text="${user.username}"> 
      </span> 
      <span th:text="${user.priviJoin.privi_name}"> 
      </span> 
    </div> 
+0

現在沒有錯誤。但是顯示空數據。我的存儲庫連接查詢中是否有任何錯誤? – Jacob

+0

你可以在你的問題細節中添加**用戶**和** PriviJoin **類。 – mrtasln

+0

請嘗試我的編輯答案 – mrtasln

相關問題