|
|
|
Проблемы с @ManyToMany
|
|||
|---|---|---|---|
|
#18+
Пытаюсь сделать связь @ManyToMany. Данные во всех таблицах есть. 1. При попытке получить группы пользователя (VedUser.getUserGroups()) всегда возвращается null (хотя данные есть) 2. При попытке получить пользователей группы (VedUserGroup. getUsers()) вылетает вот такое исключение SystemErr R Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Неправильное использование столбца строчного типа, переменной хоста, константы или функции "DESCRIPTION".. SQLCODE=-134, SQLSTATE=42907, DRIVER=3.64.82 {prepstmnt 1022573811 SELECT DISTINCT t2.ID_USER, t4.ID_GROUP, t4.description, t4.name, t4.status FROM VED.GROUPS t0 INNER JOIN VED.GROUPS_USERS t1 ON t0.ID_GROUP = t1.ID_GROUP INNER JOIN VED.USERS t2 ON t1.ID_USER = t2.ID_USER INNER JOIN VED.GROUPS_USERS t3 ON t2.ID_USER = t3.ID_USER INNER JOIN VED.GROUPS t4 ON t3.ID_GROUP = t4.ID_GROUP ORDER BY t2.ID_USER ASC } Код: -134, state=42907 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. Класс VedUserGroup [src java] package org.uit.ved.entities; import java.io.Serializable; import java.util.*; import javax.persistence.*; /** * VedEntity Группа пользователей */ @Entity @Table(name="GROUPS", schema="VED") public class VedUserGroup implements Serializable { private static final long serialVersionUID = 1L; /** * Идентификатор */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID_GROUP") private long id; /** * Наименование */ private String name; /** * Описание */ @Column(length=32700) private String description; /** * Статус */ private int status; /** * Пользователи */ @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name="GROUPS_USERS", joinColumns=@JoinColumn(name="ID_GROUP", referencedColumnName="ID_GROUP"), inverseJoinColumns=@JoinColumn(name="ID_USER", referencedColumnName="ID_USER") ) private Collection<VedUser> users; /** * Получить информацию в виде строки */ public String toString() { return new StringBuffer() .append("id=").append(getId()).append("; ") .append("name=").append(getName()).append("; ") .append("description=").append(getDescription()).append("; ") .append("status=").append(getStatus()) .toString(); } public void setId(long id) { this.id = id; } public long getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setDescription(String description) { this.description = description; } public String getDescription() { return description; } public void setStatus(int status) { this.status = status; } public int getStatus() { return status; } public void setUsers(Collection<VedUser> users) { this.users = users; } public Collection<VedUser> getUsers() { return users; } } [/src java] Класс VedUser [src java] package org.uit.ved.entities; import java.io.Serializable; import java.util.*; import javax.persistence.*; /** * VedEntity Пользователь */ @Entity @Table(name="USERS", schema="VED") public class VedUser implements Serializable{ private static final long serialVersionUID = 1L; /** * Идентификатор */ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID_USER") private long id; /** * Логин */ private String login; /** * Статус */ private int status; /** * Группы пользователей */ @ManyToMany(fetch = FetchType.EAGER, mappedBy = "users") private List<VedUserGroup> userGroups; /** * Получить информацию в виде строки */ public String toString() { return new StringBuffer() .append("id=").append(getId()).append("; ") .append("login=").append(getLogin()).append("; ") .append("status=").append(getStatus()) .toString(); } public void setId(long id) { this.id = id; } public long getId() { return id; } public void setLogin(String login) { this.login = login; } public String getLogin() { return login; } public void setStatus(int status) { this.status = status; } public int getStatus() { return status; } public void setUserGroups(List<VedUserGroup> userGroups) { this.userGroups = userGroups; } public List<VedUserGroup> getUserGroups() { return userGroups; } } [/src java] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2015, 14:00 |
|
||
|
Проблемы с @ManyToMany
|
|||
|---|---|---|---|
|
#18+
MDmitry__, вы бы взяли маленький пример с данной связью. Их тут полно, рабочих. Потом усложняли своим кодом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2015, 09:35 |
|
||
|
Проблемы с @ManyToMany
|
|||
|---|---|---|---|
|
#18+
да я б с удовольствием. но есть проект, который надо делать. как выяснилось используется не hibernate, а openjpa ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2015, 12:26 |
|
||
|
Проблемы с @ManyToMany
|
|||
|---|---|---|---|
|
#18+
MDmitry__, Вы же учитесь. Причем тут ваш большой большой проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2015, 07:51 |
|
||
|
Проблемы с @ManyToMany
|
|||
|---|---|---|---|
|
#18+
MDmitry__, Petro123 прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2015, 08:09 |
|
||
|
Проблемы с @ManyToMany
|
|||
|---|---|---|---|
|
#18+
MDmitry__, в одном случае Код: java 1. , в другом - Код: java 1. - Заменить и то и другое на Set, игры с коллекциями оставить на потом; - Убрать fetch = FetchType.EAGER хотя бы с одной стороны, иначе так и будут строиться джойны в 5 таблиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2015, 10:14 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38955163&tid=2125434]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 504ms |

| 0 / 0 |
