将Native SQL与实体对象中的默认Hibernate行为混合使用?

时间:2013-08-15 17:54:08

标签: java sql hibernate jpa nativequery

我正在尝试将原生sql查询工作到现有实体对象中,同时保留整个对象的默认Hibernate行为。

对象上的大多数字段都映射为:

@Column(name = "FIRST_NAME", nullable = false)
public String getFirstName() {
    return firstName;
}

@Column(name = "MIDDLE_NAME", nullable = true)
public String getMiddleName() {
    return middleName;
}

@Column(name = "LAST_NAME", nullable = false)
public String getLastName() {
    return lastName;
}

@Column(name = "PRIMARY_EMAIL_ADDR", nullable = false)
public String getPrimaryEmailAddress() {
    return primaryEmailAddress;
}

我想保留此功能,但添加一个我需要映射到自定义(最好是本机)SQL查询的字段。我设想了类似......

Private String foo;
@NativeSQLQuery("SELECT info FROM foo")
public String getFooInfo{return foo}

..但如果有办法像这样做,我就错过了。

我已经调查了SqlResultSetMapping和几个类似的Native和Named Query注释,但我能找到的所有内容似乎都假定一个是在类级别上运行 - 整个实体都是以自定义的本地方式映射的时尚,而不仅仅是一个领域。如何保持正常功能,但为一个字段添加自定义映射?我认为,在使用hbm文件之前,我已经完成了这个,很久以前,但是这个当前的项目是基于注释的。目前,我能想到的最好的方法是标记getter @Transient并根本不映射它,但只是用它来执行查询,但我真的不愿意这样做,只是因为这似乎完全是黑客攻击。

1 个答案:

答案 0 :(得分:1)

尝试使用@Formula("SELECT info FROM foo"),应该有效