当前位置: 首页 > 知识库问答 >
问题:

Hibernate JPA:无法将字段x设置为x

束向荣
2023-03-14

我有一个项目班:

@Entity
public class Project implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id", unique=true )
private Long id;

@Column(name="name", nullable=false, unique = true)
private String name;

@OneToMany(mappedBy="projectid", fetch = FetchType.EAGER)
private Set<Collaborator> collaborators = new HashSet<>();

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}
}

然后是合作者:

@Entity
public class Collaborator implements Serializable{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", unique = true, nullable = false)
private Long id;

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(nullable = true)
private Project projectid;

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}
}


public Project getProjectid() {
    return projectid;
}

public void setProjectid(Project projectid) {
    this.projectid = projectid;
}

在我的DAO中,我想执行以下查询:

@Query("select c from Collaborator as c where c.projectid = ?1 and  c.showable = true")
List<Collaborator> findAllShowableCollaboratorsByProjectidAndShowableTrue(Long projectId);
    null

如有任何帮助,我将不胜感激。谢谢。

共有1个答案

车胤运
2023-03-14

您的协作者中的ProjectIDProject对象,而不是Long对象。因此将存储库方法更改为:

@Query("select c from Collaborator as c where c.projectid.id = ?1 and  c.showable = true")
List<Collaborator> findAllShowableCollaboratorsByProjectidAndShowableTrue(Long projectId);  

>

  • 注意,不建议使用位置参数绑定,因为参数的顺序无法更改(在您的情况下,似乎没有问题,因为只有一个参数)。我建议你改变一下:

    @Query("select c from Collaborator as c where c.projectid.id = :pid and  c.showable = true")
    List<Collaborator> findAllShowableCollaboratorsByProjectidAndShowableTrue(@Param("pid") Long pid);  
    

    使用projectID作为类型为project的字段名有点混乱。将名称更改为project这样的名称更好。

  •  类似资料:
    • 问题内容: 用户声明: 模式声明: UserPatternDeclaration: 请求数据库: 我得到以下异常: 请帮助解决此问题。 错误消息看起来非常非常奇怪。 我已阅读相关主题的点击,但未找到答案。 ps hibernate日志(异常之前): 在浏览器中,我看到以下消息: 问题答案: 如果将HQL查询更改为会怎样? 我认为Hibernate混淆了对象和ID字段。

    • 问题内容: 我从JavaFX开始。 当我执行程序时,发生错误,在尝试执行此操作之前,它工作正常且按钮单击正常,但这是在我打算使按钮单击更改文本之前。 那就是FXML,在行上,您可以看到文本为“我的文本将改变!”。在Eclipse的FXML文本编辑器上,它给了我这个错误:“您不能将’Text’分配给控制器字段’Label’。 这是我的SceneController类: 如前所述,在获得标签之前,它将

    • 问题内容: 我试图从我的xml中将按钮的文本设置为“ <<<”,但出现“错误:(20)解析XML时出错:格式不正确(无效令牌)” 因此,我跳到我的strings.xml并在其中输入它,这显然行不通。 有没有解决方法? 问题答案: 这些是html实体,也可以在android studio中使用:

    • 问题内容: 我有一个用netbeans开发的应用程序,我想在显示面板时将焦点设置为一定。我已经阅读了许多文章,并尝试了各种方法,但没有奏效。主要问题之一是在哪里放置所需的代码,我认为在我的情况下是 有一些指示使用Window Listener的帖子,但是随着netbeans生成GUI,我无法看到如何实现接口,因为我无法编辑创建jPANEL等的代码。整个过程非常令人沮丧,我真的没有相信这应该很困难。

    • 在我的Mac电脑(Catalina版本10.15.5)上,我无法将默认浏览器更改为谷歌Chrome。 当我转到->时,在下,我只看到Safari和Firefox的选项。当我打开Chrome设置并单击时,我得到一个通知,上面写着

    • 我在我的项目中使用jsPlumb库,我有一个函数,如果endpoint图像连接,则会更改它们。当页面加载并且一切正常时,我调用它,但是当我在连接事件中调用它时,什么都不会发生。这是我的代码: 如果断开连接,我还尝试将endpoint图像更改回第一个外观,但在这种情况下,只有源endpoint更改,目标保持不变: 我错过了什么,或者我如何解决这个问题? 编辑:这里是JSFIDLE: https://