Java 如何使用JPA将一个表映射到另一个查找表?
我有两张桌子: 1) 应用程序(使用getter和Setter方法的int-appid、int-statusid、String-appname、String-appcity) 2) App_Status(int statusid,带setter和getter方法的字符串statusDescription) 我想将应用程序表映射为应用程序状态,这样我就不必为了获取状态描述而单独查询应用程序状态表。我必须注意的一点是,无论对应用程序表执行什么操作(插入、更新或删除),App_状态表都应不受影响,这意味着它是一个只读表,由DBA内部维护,仅用于查找表Java 如何使用JPA将一个表映射到另一个查找表?,java,database,orm,jpa,Java,Database,Orm,Jpa,我有两张桌子: 1) 应用程序(使用getter和Setter方法的int-appid、int-statusid、String-appname、String-appcity) 2) App_Status(int statusid,带setter和getter方法的字符串statusDescription) 我想将应用程序表映射为应用程序状态,这样我就不必为了获取状态描述而单独查询应用程序状态表。我必须注意的一点是,无论对应用程序表执行什么操作(插入、更新或删除),App_状态表都应不受影响,这意
我正在使用JPA注释,因此请建议如何处理此问题。以下内容应该可以使用。在
App\u Status
表上映射AppStatus
实体:
@Entity
public class AppStatus {
@Id
private Long id;
private String statusDescription;
// getters, setters, hashCode, equals...
}
并在应用程序
实体中用一对一关联声明:
@Entity
public class Application {
@Id
private Long id;
private String appName;
private String appCity;
@OneToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "statusid", nullable = false, insertable = false, updatable = false)
private AppStatus appStatus;
// getters, setters, hashCode, equals...
}
请特别注意以下细节:
- 我将fetch模式定义为
(注意,如果没有定义,EAGER是默认模式),这样在加载EAGER
应用程序时,
将被急切地获取AppStatus
- 我没有定义任何级联选项,因此不会将任何操作从
级联到Application
AppStatus
- 要检索所有
,请使用FETCH连接应用程序
FROM Application a JOIN FETCH a.appStatus