Java 如何使用hibernate和联接或查询创建映射(标题不足以解释)
我想做的是让Hibernate根据Join或select为我生成一个映射。这部分是静态已知的,因此我不必到数据库中进行单独的选择 从该映射中,我想使用一个运行时键来获取最终值。见下表和代码 业务案例:我们希望能够为我们系统中的各种警报生成不同的内容:中等电子邮件/短信、发生的事件以及最终的用户输入。 将图形图表发送到SMS目的地是没有意义的,但对于电子邮件(例如,给定相同的事件)来说是非常好的。我们可以利用现有代码来应用XSLT样式表,这正是我们最终的目标 围绕这一点的注释令人费解,我承认,也许对这个问题的想法是完全错误的。我正在寻找一些教育和解决办法Java 如何使用hibernate和联接或查询创建映射(标题不足以解释),java,hibernate,jpa,Java,Hibernate,Jpa,我想做的是让Hibernate根据Join或select为我生成一个映射。这部分是静态已知的,因此我不必到数据库中进行单独的选择 从该映射中,我想使用一个运行时键来获取最终值。见下表和代码 业务案例:我们希望能够为我们系统中的各种警报生成不同的内容:中等电子邮件/短信、发生的事件以及最终的用户输入。 将图形图表发送到SMS目的地是没有意义的,但对于电子邮件(例如,给定相同的事件)来说是非常好的。我们可以利用现有代码来应用XSLT样式表,这正是我们最终的目标 围绕这一点的注释令人费解,我承认,也许
CREATE TABLE AlertProfile(
AlertProfileID BIGINT(20) NOT NULL AUTO_INCREMENT ,
Description VARCHAR(64) NOT NULL,
`Type` enum('EMAIL','SMS','COMPOSITE') NOT NULL,
Destination VARCHAR(32),
PRIMARY KEY (AlertProfileID)
)
类型上的“JOIN”
CREATE TABLE EventTemplates(
EventTemplateID BIGINT(20) NOT NULL AUTO_INCREMENT,
EventName VARCHAR(32) NOT NULL,
`Type` VARCHAR(32) NOT NULL,
TemplateXSLT MEDIUMTEXT NOT NULL,
PRIMARY KEY (EventTemplateID)
)
有一些缺少的带有AlertProfiles的表,我认为与讨论无关
现在,我想使用以下代码:
@Entity
@DiscriminatorValue("EMAIL")
public class EmailAlertProfile extends AlertProfile<String> {
@Basic
@Column(name = "Destination")
private String emailAddress;
@OneToMany(cascade = CascadeType.ALL)
@MapKey(name = "Type")
private Map<String, EventTemplate> nameToTemplate = new HashMap<>();
@Override
public Type getType() {
return Type.EMAIL;
}
@Override
public void sendAlert(EventMessage event) {
// code here to work. Use the event type to select from
// all available email templates
String template = eventTemplates.get(event.getEventType());
String content = event.applyStyleSheet(new Source(template))
VWMessage vw = new VWMessage("no-reply@company.com",emailAddress,event.getSubject(),);
event.setRecipient(emailAddress);
JmsTemplate jmsTemplate = StaticContext.getBean(JmsTemplate.class);
Queue queue = (Queue) StaticContext.getBean("emailQueue");
jmsTemplate.convertAndSend(queue, event);
}
}