我正在尝试使用以下方法更新我的实体列:
@Modifying
@Query("update Person person set person.hixNumber = :hixNumber , "
+ "fixNumber.fixNumber = :fixNumber where person.role.type = 'ADMIN'")
int updatePersonByRole(@Param("hixNumber ") int hixNumber , @Param("fixNumber ") int fixNumber);
@Getter
@Setter
@Entity
@NoArgsConstructor
public class Person {
@EmbeddedId
private PersonId personId;
@MapsId("roleId")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "role_id", insertable = false, updatable = false)
private Role role;
@MapsId("storeId")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "store_id", insertable = false, updatable = false)
private Store store;
private int hixNumber;
private int fixNumber;
}
和主键实体:
@Getter
@Setter
@EqualsAndHashCode
@Embeddable
public class Personid implements Serializable {
private Long roleId;
private Long storeId;
}
我做错了什么?谢谢你。
我认为问题在于您正在间接尝试引用一个依赖实体role
。这需要在update语句中使用join
,而且它在本机查询中转换得不好。
尝试使用子查询,这样可以更好地转换为本机查询:
update Person person
set person.hixNumber = :hixNumber,
person.fixNumber = :fixNumber
where exists (
select personSub.id
from Person personSub
inner join personSub.role r
where person.id = personSub.id
and r.type = 'ADMIN'"
)
问题内容: 将SELECT查询放在UPDATE查询的WHERE子句中时出现错误。 我的查询是这样的: AND错误将显示如下: “无法在FROM子句中指定目标表’m’进行更新” 问题答案: 实际上,您可以通过将其包装在子查询中来更新它(从而为结果创建临时表) 或使用 JOIN
我对SpringData和JPA有问题。当我向HomeRepository接口添加方法时,我得到一个错误。我使用的是JPararePository接口,在pom.xml文件中有一个MySQL数据库集。这些只是我对spring的开始,所以我需要一些了解spring的人的帮助。下面是我的代码和日志: 主页库: 用户存储库: 日志:
..回购方法 我用DESC和ASC调用编写了一个单元测试,反之亦然,似乎第一个调用是什么,第二个调用给出的结果是一样的。
我无法安装postgresql 9.5这是我在docker文件Dockerfile行的时候 它运行下面的命令。 当我在ubuntu xenial上时,它似乎试图从debian存储库中获取更新。可能是因为我首先为debian安装了错误的docker版本,然后用删除了debian docker 在此之后,我已经为我的ubuntu xenial发行版安装了docker。我不明白为什么当我运行docker
我只是不得不从一些我没有联系的开发人员那里接管一个Flutter项目... Flutter医生都检查过了...错误都在pub-cache中。我尝试了flutter清理,flutter pub get...这是错误的开始... “注意: C: \Users\justi\AppData\Local\Pub\Cache\hosted\Pub.dartlang.org\agora\u rtc\u engi
问题内容: 我试图在Postgres 9.1.3中使用此查询: 我收到此错误: 我真的很困惑 根据Postgres文档,WITH子句显示正确。如果我在WITH子句中单独运行查询,则会得到正确的结果。 问题答案: 从精美的手册中: 有两种方法可以使用数据库中其他表中包含的信息来修改表:使用子选择,或在子句中指定其他表。 因此,您只需要一个FROM子句: 错误消息甚至说了很多: 错误:缺少表“ sto