我有两张桌子:
1)应用程序(int appid,int statusid,String appname,带有getter和Setter方法的字符串appcity)
2)App_Status(int statusid,带有setter和getter方法的String statusDescription)
我想将Application表与App_Status映射,这样我就不必单独查询App_Status表以获取statusDescription。我必须要注意的一件事是,无论Application(应用程序)表的内容是什么(插入,更新或删除),App_Status表都应该不受影响,这意味着它是一个只读表,由DBA在内部维护,仅用于查找表。
我正在使用JPA注释,请建议如何处理。
答案 0 :(得分:2)
以下内容应该有效。在AppStatus
表上映射App_Status
实体:
@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,则默认为EAGER),以便在加载AppStatus
时急切地获取Application
。 Application
级联到AppStatus
。检索所有Application
,使用FETCH JOIN
FROM Application a JOIN FETCH a.appStatus