我在使用QueryDSL创建查询时遇到问题.我想通过其ID检索某个用户的所有组.这是怎么回事?
public List<Group> findGroupsByUser(Integer userId) {
JPQLQuery query = new JPAQuery(getEntityManager());
??????
return result;
}
Run Code Online (Sandbox Code Playgroud)
映射类:
@Entity(name = "user")
public class User {
@Id
private int id;
private String login;
@ManyToMany
@JoinTable(name = "user2group", joinColumns = @JoinColumn(name = "uid"), inverseJoinColumns = @JoinColumn(name = "gid"))
private Set<Group> groups;
...
}
@Entity(name = "group")
public class Group {
@Id
private int id;
private String name;
@ManyToMany
@JoinTable(name = "user2group", joinColumns = @JoinColumn(name = "uid"), inverseJoinColumns = @JoinColumn(name = "gid"))
private Set<User> users; …Run Code Online (Sandbox Code Playgroud) 在我们的后端中,有几种服务可通过带有Apache ActiveMQ的JMS发送和接收消息。每个服务都有一个到ActiveMQ代理的会话。现在,我们要执行以下操作(伪代码):
服务s1:
Message m = createMessage("s2","Hello World")
sendMessage(m)
try {
Message answer = commit()
...
} catch (TransactionFailedException e){
...
}
Run Code Online (Sandbox Code Playgroud)
服务s2:
onMessageReceive:
try {
Message m = getReceivedMessage()
Message answer = doSomeStuff()
send(answer)
} (Exception e) {
rollback()
}
Run Code Online (Sandbox Code Playgroud)
显然,提交必须阻塞直到答案到达或事务失败为止。服务s2也有可能创建新的嵌套事务,因为s2正在向另一服务发送消息。如何使用ActiveMQ的事务来实现此行为?有一些示例可用,但是在这些示例中,事务仅用作批处理机制来发送消息。