У меня есть 3 таблицы, Role[roleId, roleName]
, Token[tokenID, tokenName]
& ROLETOKENASSOCIATION[roleId, tokenID]
.Третий был автоматически создан hibernate.Теперь, если я просто напишу Запрос, чтобы получить все объекты из средств класса Role, он выдаст все объекты роли вместе со связанным tokenID & tokenName.
Я просто хотел, чтобы ассоциация была однонаправленной.То есть: Roles ---> Tokens Итак, аннотация в классе Role выглядит следующим образом:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int roleId;
private String roleName;
@ManyToMany
@JoinTable(name="ROLE_TOKEN_ASSOCIATION",
joinColumns={@JoinColumn(name="roleId")},
inverseJoinColumns={@JoinColumn(name="tokenID")})
private List<Token> tkns;
//Getters & Setters
Теперь я хочу tokenNames для определенного roleId.Сначала я сделал запрос, подобный этому SELECT tkns.tokenName FROM Role WHERE Role.roleId=:roleId
Но я закончил с некоторой ошибкой разыменования.
Затем я изменил запрос на SELECT tkns FROM Role r WHERE r.roleId=:roleId
Теперь я получил то, что хотел.Но это идет и с roleId.
Как мне получить само имя токена?На самом деле моя проблема решена, но я хотел бы знать, как это сделать.
Мне будет полезно, если кто-нибудь объяснит конструкцию запроса.
Любойпредложения !!