亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我怎樣才能強制使用給定的表名來連接?

我怎樣才能強制使用給定的表名來連接?

慕斯709654 2023-04-13 14:06:37
我正在使用 Spring 數據 JPA 并正在建立我的第一個 ManyToMany 關系。我將第一個對象“用戶”定義為:import javax.persistence.*;import java.util.Set;@Entity@Table(name = "SMX0_PAR_USER", schema = "SMX0_INPUT_DAY")public class User {    @Id    private String userID;    private String username;    @ManyToMany    @JoinTable(        name = "SMX0_PAR_USER_ROLE",        schema = "SMX0_INPUT_DAY",        joinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "userID"),        inverseJoinColumns = @JoinColumn(name = "ROLE_ID", referencedColumnName = "roleID")    )    private Set<Role> roleSet;    protected User(){    }    public User(String userID, String username){        this.userID = userID;        this.username = username;    }第二個對象“角色”定義為:import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.ManyToMany;import javax.persistence.Table;import java.util.Set;@Entity@Table(name = "SMX0_PAR_ROLE", schema = "SMX0_INPUT_DAY")public class Role {    @Id    private int roleID;    private String rolename;    @ManyToMany(mappedBy = "roleSet")    private Set<User> userSet;    protected Role(){    }    public Role(int roleID, String role){        this.roleID = roleID;        this.rolename = role;    }這兩個類中的所有字段都有 getter 和 setter。在沒有與角色的多對多關系的情況下獲取用戶非常有效。當嘗試訪問其中包含以下 thymeleaf 代碼的頁面時: <tr th:each="user : ${users}">     <td th:text="${user.getUserID()}">user ID</td>     <td th:text="${user.getUsername()}">username</td>     <td><span th:each="role : ${user.getRoleSet()}">         <span th:text="${role.getRolename()}">rolename</span>     </span></td></tr>這里發生了什么,當我明確地將連接表名稱設置為其他名稱時,為什么會引用“ROLESET0_”之類的內容?我怎樣才能強制使用我已經給出的表名?
查看完整描述

2 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

ROLESET0_是 hibernate 在它生成的查詢中分配的別名。spring.jpa.show-sql=true如果您設置查看 hibernate 正在生成的完整查詢,可能會有所幫助。您還可以設置spring.jpa.properties.hibernate.format_sql=true以使其更具可讀性。



查看完整回答
反對 回復 2023-04-13
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

@Column (name = "YourColumnName")嘗試為兩個類中的所有字段添加注釋。


此外,referencedColumnName參數應該是該外鍵列引用的列的名稱。


    public class User {

       @Id

       @Column(name = "YourColumnName")

       private int roleID;

       @Column(name = "YourColumnName")

       private String rolename;


       @ManyToMany

        @JoinTable(

        name = "SMX0_PAR_USER_ROLE",

        schema = "SMX0_INPUT_DAY",

        joinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "YourColumnName"),

        inverseJoinColumns = @JoinColumn(name = "ROLE_ID", referencedColumnName ="YourColumnName"))

        .....


        }


   public class Role {


       @Id

       @Column(name = "YourColumnName")

       private int roleID;

       @Column(name = "YourColumnName")

       private String rolename;

       .......


       }


查看完整回答
反對 回復 2023-04-13
  • 2 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號