2017-09-15 7 views
0

私は、次のアノテーションを使用して多対多の関係を設定している:休止多対多JoinTableデフォルトのOrderBy

@ManyToMany 
@JoinTable(name="back_date_entry_project", 
    joinColumns={@JoinColumn(name="back_date_entry_id")}, 
    inverseJoinColumns={@JoinColumn(name="project_id", columnDefinition="INT(10) UNSIGNED")}, 
    [email protected](name="fk_back_date_entry_project_back_date_entry_back_date_entry_id"), 
    [email protected](name="fk_back_date_entry_project_project_project_id"), 
    [email protected](columnNames={"back_date_entry_id","project_id"}) 
) 
private Set<Project> projects; 

テーブルに参加しましょ作成中に、この構成はキーを追加します。

KEY `fk_back_date_entry_project_project_project_id` (`project_id`), 

表に参加し、次のように作成されます::

mysql> show create table back_date_entry_project ; 
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+    
| Table     | Create Table     |    
+-------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+    
| back_date_entry_project | CREATE TABLE `back_date_entry_project` (               
    `back_date_entry_id` int(10) unsigned NOT NULL,                    
    `project_id` int(10) unsigned NOT NULL,                      
    PRIMARY KEY (`back_date_entry_id`,`project_id`),                   
    KEY `fk_back_date_entry_project_project_project_id` (`project_id`),               
    CONSTRAINT `fk_back_date_entry_project_back_date_entry_back_date_entry_id` FOREIGN KEY (`back_date_entry_id`) REFERENCES `back_date_entry` (`back_date_entry_id`),                      
    CONSTRAINT `fk_back_date_entry_project_project_project_id` FOREIGN KEY (`project_id`) REFERENCES `project` (`project_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |                      
+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+    
1 row in set (0.00 sec) 

私が次期クエリは::

mysql> select * from back_date_entry_project ; 
+--------------------+------------+ 
| back_date_entry_id | project_id | 
+--------------------+------------+ 
|     1 |   65 | 
|     3 |   65 | 
|     2 |   85 | 
|     2 |   95 | 
|     1 |   99 | 
+--------------------+------------+ 
5 rows in set (0.00 sec) 

この結果は、PROJECT_IDでソートされているように私は結果を与えますか?
SQLコンソールでback_date_entry_idを使用してこれを並べ替えるにはどうすればよいですか?

答えて

1

If you don't specify order by you can't be sure about order.

EDIT:

@ManyToMany 
@JoinTable(name="back_date_entry_project", 
    joinColumns={@JoinColumn(name="back_date_entry_id")}, 
    inverseJoinColumns={@JoinColumn(name="project_id", columnDefinition="INT(10) UNSIGNED")}, 
    [email protected](name="fk_back_date_entry_project_back_date_entry_back_date_entry_id"), 
    [email protected](name="fk_back_date_entry_project_project_project_id"), 
    [email protected](columnNames={"back_date_entry_id","project_id"}) 
) 
@OrderBy(value="nameOfTheProjectColumn asc/desc") 
@OrderColumn(name="back_date_entry_id") 
private Set<Project> projects; 

@OrderByは、プロジェクトのプロパティのために動作します。

あなたは@OrderColumn(名前=「back_date_entry_id」)を試すことができますが

+0

はイエスが、私は..構成でこれをしたい、それはあまりにも –

+0

あなたは[並べ替えたりOrderColumnアノテーションを使用できるSQLコンソールに反映する必要があります。私は私の答えを編集しました –

+0

申し訳ありませんが、私は両方を試したことを忘れて、これらはSQLのコンソールではないと思うHQLクエリに反映されます\ –

関連する問題