gpt4 book ai didi

java - 在实体对象中将 native SQL 与默认 Hibernate 行为混合?

转载 作者:太空宇宙 更新时间:2023-11-04 07:27:42 24 4
gpt4 key购买 nike

我正在尝试对现有实体对象执行 native 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;
}

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

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

..但是如果有一种方法可以像那样简单地做到这一点,我就错过了。

我已经研究了 SqlResultSetMapping 和几个类似的 native 和命名查询注释,但我能找到的所有注释似乎都假设在类级别上操作 - 整个实体以自定义的 native 方式映射,而不仅仅是一个字段。我该如何保留正常功能,但为一个字段添加自定义映射?我想,在使用 hbm 文件之前我已经完成了此操作,但当前的项目是基于注释的。目前,我能想到的最好办法是标记 getter @Transient 并根本不映射它,而只是用它来执行查询,但我真的不想这样做,只是因为它看起来像是一个彻底的 hack。

最佳答案

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

关于java - 在实体对象中将 native SQL 与默认 Hibernate 行为混合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18258662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com