我有两个表:
1) Application(int appid, int statusid, String appname, String appcity with getter 和 Setter 方法)
2)App_Status(int statusid,带有setter和getter方法的String statusDescription)
我想将应用程序表与App_Status映射,这样我就不必单独查询App_Status表来获取statusDescription。我必须小心的一件事是,无论对应用程序表执行什么操作(插入、更新或删除),App_Status 表都应该不受影响,这意味着它是一个只读表,由 DBA 在内部维护,仅用于查找表。
我正在使用 JPA 注释,因此请建议如何处理此问题。
最佳答案
以下内容应该有效。在 App_Status
表上映射 AppStatus
实体:
@Entity
public class AppStatus {
@Id
private Long id;
private String statusDescription;
// getters, setters, hashCode, equals...
}
并在 Application
实体中使用一对一关联来声明它:
@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...
}
特别注意以下细节:
- 我将获取模式定义为
EAGER
(请注意,如果您未定义它,则 EAGER 是默认值),以便在加载时立即获取AppStatus
申请
。 - 我没有定义任何级联选项,因此不会有任何操作从
Application
级联到AppStatus
。 要检索所有
Application
,请使用 FETCH JOINFROM Application a JOIN FETCH a.appStatus
关于java - 如何使用 JPA 将一个表与另一个查找表映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2768493/