Lumpuhkan pertanyaan sambungan tempatan untuk Hibernate NonUniqueDiscoveredSqlAliasException
P粉852114752
P粉852114752 2024-02-21 13:50:47
0
1
444

Saya ingin menyertai beberapa jadual menggunakan pertanyaan asli dalam Spring Boot. Pertanyaannya kelihatan seperti ini:

SELECT * FROM employee AS e 
INNER JOIN c ON e.id = c.employee_id 
INNER JOIN b ON c.arw_id = b.arw_id 
INNER JOIN a ON b.ap_id = a.id

Kini, saya mempunyai entiti dalam [id][arw_id] 上收到 Hibernate NonUniqueDiscoveredSqlAliasException。我可以使用 using 注释修复第二个,但是表的 id dan saya benar-benar tidak mahu menukar nama mereka...

Sebarang cadangan atau pepijat Hibernate?

Sekian, Niklas

EDIT: Untuk menjelaskan: mesej ralat pertama yang saya dapat ialah Encountered a duplicated sql alias [arw_id] during auto-discovery of a native-sql query;嵌套异常是 org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasExce[...]. Kemudian saya menukar pertanyaan kepada:

SELECT * FROM employee AS e 
INNER JOIN c ON e.id = c.employee_id 
INNER JOIN b ON USING (arw_id) 
INNER JOIN a ON b.ap_id = a.id

Dan ralat berikut muncul: 在自动发现本机 SQL 查询期间遇到重复的 sql 别名 [id];嵌套异常是 org.hibernate.loader.custom.NonUniqueDiscoveredSqlAliasExce[...]

P粉852114752
P粉852114752

membalas semua(1)
P粉546138344

Adakah anda benar-benar mahukan semua lajur daripada employeecba? Apa yang anda tukarkan hasilnya?

Jika anda ingin menukarnya kepada Employee kelas, gunakan sahaja

SELECT e.* FROM employee AS e 
INNER JOIN c ON e.id = c.employee_id 
INNER JOIN b ON c.arw_id = b.arw_id 
INNER JOIN a ON b.ap_id = a.id

Apakah yang membuatkan anda yakin bahawa ralat yang anda terima adalah disebabkan oleh idarw_id? Ia adalah medan yang berbeza dan ia tidak sepatutnya memberi anda ralat yang anda nyatakan. Atau ini berkemungkinan besar kerana anda mempunyai nama lajur yang sama dalam cba anda Dalam kes ini, nama lajur anda menjadi samar-samar.

Adalah lebih jelas jika anda boleh menunjukkan kepada kami sekeping kod tempat anda menggunakan pertanyaan ini

Edit Seperti yang saya lihat, semua yang anda lakukan ialah menggunakan kejadian berulang USING 而不是 ON。这意味着您在两个表之间共享您的arw_id,这将消除结果集中arw_id . Jika ini adalah kes yang sama dengan id anda, mengapa tidak lakukan perkara yang sama dengan id anda?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan