java - Hibernate查询语言: Getting a SQL Syntax Error for my Query

标签 java sql database hibernate relational-database

我已经检查了很多相关问题,但那里的答案还没有解决我的问题。

我有通过 Hibernate 映射的实体 UserCharacter

@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;

    ...
}

我想选择具有特定用户名的所有字符,因此我使用的查询如下所示:

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 有关...

希望你能帮助我! :)

最佳答案

这应该有效:

private final static String RETRIEVE_CHARACTERS_FOR_USER = "select c from Character c where c.user.username = :paramUsername";

关于java - Hibernate查询语言: Getting a SQL Syntax Error for my Query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61384510/

相关文章:

mysql - 如何在sql中合并两列并将其显示为单独的记录

java - Maven:如何保护 Java 7 项目不使用针对 Java 8 编译的 jar Artifact ?

java - 从 String 到 byte[] 到 String 的转换

java - 参数内带有变量的 cucumber 步骤

sql - SequelizeJS 软删除

sql - 需要一种更好的方法来将同一表行中的一个列值与多个列值进行比较

mysql - mysql中的INT(5)是什么意思?

java - Hawt.io 的 Spring Security

mysql - 如何使用 Rails SQL 查询搜索 nil 结果

php - ES:匹配 bool 值和模糊查询