【发布时间】:2016-06-30 15:04:38
【问题描述】:
考虑以下两个实体:
@Entity
public class HostMachine {
@ManyToMany(fetch = FetchType.LAZY, targetEntity = Application.class)
private Set<Application> applications;
// getters and setters
}
.
@Entity
public class Application {
@Basic
@Enumerated(EnumType.STRING)
private BusinessCriticality businessCriticality;
@ManyToMany(fetch = FetchType.LAZY, targetEntity = HostMachine.class, mappedBy = "applications")
private Set<HostMachine> hosts;
// getters and setters
}
经典的ManytoMany 关系。 现在我想查看主机上连接的应用程序的最高业务关键性。
我尝试使用@Transient 属性并在每个返回主机的查询之后设置它,但是对于集合我需要对每个元素进行查询,所以这在代码中非常不高效且直接丑陋.
然后我尝试使用Hibernate的@Formula:
@Formula("SELECT MIN(a.businessCriticality) FROM Application a")
private BusinessCriticality businessCriticality;
但这给了我一个MySQLSyntaxErrorException,即使我可以在 MySQL 客户端中执行查询。
【问题讨论】:
标签: java mysql database hibernate jpa