设置@ManyToOne或@OneToOne关系而不实际获取关联的实体

时间:2015-08-20 11:33:09

标签: java database hibernate jpa orm

我有与

类似的实体
@Entity
@Table(name = "Template")
public class Template implements java.io.Serializable {
      Script script;

      @OneToOne(fetch = FetchType.LAZY)
      @JoinColumn(name = "SCRIPTID")
      public Script getScript() {
          return script;
      }

      public void setScript(Script script) {
          this.script= script;
      }
}

其中Script是另一个实体。

当我想保存Template时,我会从某些遗留代码中获取Script的ID,因此我的保存代码为:

 Long scriptId = createNewScript(....);
 Script script = commonDao.findByPrimaryKey(Script.class, scriptId); //unnecessary reading
 template.setScript(script);

 commonDao.save(template);

问题是我必须不必阅读Script,只能将其设置为Template。有没有办法只设置脚本的Id,但仍然有getter返回Script

1 个答案:

答案 0 :(得分:1)

是的,有办法。

Hibernate允许你做这样的事情:

template.setScript(new Script());
template.getSCript().setId(scriptId);
commonDao.save(template);