我的项目是一个pollingapp,基本上一个用户可以有几个投票,一个投票可以有几个投票选项。
我有一个jpql查询,它试图获取投票中投票最多的选项,但是我的dababase返回一个错误,说他试图在表中插入一个新值 pollings
,我很困惑。
我的问题是:
@Query(value = "SELECT opt from Poll pol " +
"JOIN pol.options opt " +
"WHERE opt.votes.size = (SELECT max(opt2.votes.size) from pol.options opt2) AND " +
"pol.id = ?1")
我将在这里发布来自用户、投票和选项类的关系
用户
@OneToMany(mappedBy = "owner", orphanRemoval = true, cascade = CascadeType.ALL)
private Set<Poll> pollings = new HashSet<>();
@ManyToMany
@JoinTable(name = "user_votes",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "option_id", referencedColumnName = "id"))
private Set<Option> votes = new HashSet<>();
投票
@ManyToOne
@JoinColumn(name = "owner_id", nullable = false)
private User owner;
@OneToMany(mappedBy = "poll", orphanRemoval = true, cascade = CascadeType.ALL)
private Set<Option> options = new HashSet<>();
选项
@ManyToOne
@JoinColumn(name = "poll_id", nullable = false)
private Poll poll;
@ManyToMany(mappedBy = "votes")
private Set<User> votes = new HashSet<>();
当我尝试执行查询时,我保留了一个user、poll和两个选项,它们经过了正确的测试,下面是我的错误:
WARN 26113 o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 23502, SQLState: 23502
ERROR 26113 o.h.engine.jdbc.spi.SqlExceptionHelper : NULL not allowed for column "OWNER_ID"; SQL statement:
insert into pollings (description, is_enabled, owner_id, title, id) values (?, ?, ?, ?, ?) [23502-200]
我在我调用的行中调试了查询,也执行了查询求值的表达式和一个有同样的错误,对不起我的英语,我来自巴西只是学习,如果有人要求一些代码我可以提供,谢谢你的关注。
暂无答案!
目前还没有任何答案,快来回答吧!