小编pro*_*bra的帖子

使用带有多对多映射的QueryDSL JPA编写查询

我在使用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)

java hibernate jpa querydsl

6
推荐指数
1
解决办法
7300
查看次数

在JMS(ActiveMQ)中使用事务

在我们的后端中,有几种服务可通过带有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的事务来实现此行为?有一些示例可用,但是在这些示例中,事务仅用作批处理机制来发送消息。

activemq-classic middleware transactions jms

5
推荐指数
1
解决办法
5442
查看次数