Java 如何使用hibernate和联接或查询创建映射(标题不足以解释)

Java 如何使用hibernate和联接或查询创建映射(标题不足以解释),java,hibernate,jpa,Java,Hibernate,Jpa,我想做的是让Hibernate根据Join或select为我生成一个映射。这部分是静态已知的,因此我不必到数据库中进行单独的选择 从该映射中,我想使用一个运行时键来获取最终值。见下表和代码 业务案例:我们希望能够为我们系统中的各种警报生成不同的内容:中等电子邮件/短信、发生的事件以及最终的用户输入。 将图形图表发送到SMS目的地是没有意义的,但对于电子邮件(例如,给定相同的事件)来说是非常好的。我们可以利用现有代码来应用XSLT样式表,这正是我们最终的目标 围绕这一点的注释令人费解,我承认,也许

我想做的是让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);

    }
}