Я уже проверил много связанных вопросов, но ответы там еще не решили мою проблему.
У меня есть сущности User
и Character
, которые отображаются через Hibernate.
@Entity
@Table(name = "user", uniqueConstraints = @UniqueConstraint(columnNames = { "username" }))
public class User {
@Id
@NotEmpty
@Column(name = "username")
private String username;
...
}
@Entity
@Table(name = "character", uniqueConstraints = @UniqueConstraint(columnNames = { "charId" }))
public class Character {
...
@NotEmpty
@ManyToOne
@JoinColumn(name = "username", referencedColumnName = "username")
private User user;
...
}
Я хочу выбрать все символы с указанным c именем пользователя, поэтому используемый мной запрос выглядит следующим образом:
private final static String RETRIEVE_CHARACTERS_FOR_USER = "select c from Character as c inner join User as u where u.username = :paramUsername";
и мой код выглядит следующим образом:
result = session.createQuery(RETRIEVE_CHARACTERS_FOR_USER, Character.class)
.setParameter(PARAM_USERNAME, user.getUsername()).getResultList();
Я также пытался удалить внешний ключ, используйте String username
вместо User user
и просто запросите c.username
, поэтому я даже не уверен, что проблема связана с Hibernate ...
Я надеюсь вы можете мне помочь! :)