|
|
|
ManyToOne
|
|||
|---|---|---|---|
|
#18+
Можете подробно объяснить как делаются связи ManyToOne? Если я делаю так, то ошибка, т.е. он пытается создать внешний ключ? и берет не те поля? при чем тут bytea , если я ему указываю client_id, который совместим с client_id, т.к. long 20:42:12,686 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] (MSC service thread 1-1) HHH000388: Unsuccessful: alter table db_cred.public.demand add constraint FK_2vw0pnlo54wm1d7o91s2fa279 foreign key (client) references db_cred.public.client 20:42:12,686 ERROR [org.hibernate.tool.hbm2ddl.SchemaUpdate] (MSC service thread 1-1) ОШИБКА: ограничение внешнего ключа "fk_2vw0pnlo54wm1d7o91s2fa279" нельзя реализовать Подробности: Колонки ключа "client" и "id" имеют несовместимые типы: bytea и client_id. Demand.java ............. @Entity @Table(name = "demand", schema = "public", catalog = "db") public class Demand { .................... @ManyToOne @JoinColumn(name = "client_id", nullable = false) private Client client; ..................... Client.java @Entity @Table(name = "client", schema = "public", catalog = "db") public class Client { .................... @OneToMany(mappedBy = "client") private Collection<Demand> demands = new HashSet<Demand>(); public Collection<Demand> getDemands() { return demands; } public void setDemands(Collection<Demand> demands) { this.demands = demands;} ..................... Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Если я указываю использовать уже созданный ForeignKey, убрав во 2 сущности OneToMany .... @NotNull @ManyToOne @JoinColumn(name = "client_id", foreignKey = @ForeignKey(name = "demand_fk")) private Client client; то он его не использует, запрос строится только по одной таблице, таблицы заполнены, select в СУБД выполняются корректно 21:27:15,159 INFO [stdout] (default task-4) Hibernate: select demand0_.id as id1_1_, demand0_.client as client2_1_, demand0_.client_id as client_i3_1_, demand0_.d_demand as d_demand4_1_, demand0_.description as descript5_1_, demand0_.f_active as f_active6_1_, demand0_.period as period7_1_, demand0_.summa as summa8_1_ from db_cred.public.demand demand0_ версии hibernate 4.3.7, spring 4.1.2, AP - wildfly 8.2 И вообще насколько правильно использовать имеющиеся fk в базе, или обязательно объявлять в одной сущности @ManyToOne, в другой @OneToMany чтобы создался свой fk? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2014, 21:02 |
|
||
|
ManyToOne
|
|||
|---|---|---|---|
|
#18+
Вы не указали СУБД. Таблицы видимо сами создаете? Если да, то обратите внимание, что тип id в таблице client BIGSERIAL, а тип колонки client_id в таблице demand BIGINT - т.е. это не совсем один и тот же тип - возможно hibernate или СУБД считают их разными? Как вариант, пусть hibernate сам создаст сруктуру БД (в чистой базе) - тогда можно будет сравнить то что создает hibernate с тем что создали вы - возможно это прояснит ситуацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 09:53 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38838829&tid=2126017]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 398ms |

| 0 / 0 |
