从我的研究来看,这似乎不太可能,但这是我的用例。
我有一个名为user的表,它有一个地址id。
我想将一个UserReference和User类Map到这个表,其中UserReference不包含Address对象(以保存sql连接时间),User * 包含Address对象(以防需要)。
我不能使用 subclass,因为它需要一个连接表,我不能只定义两个单独的类,因为get()似乎返回每行的双精度值(一个用于User,一个用于UserReference)。
有人知道我该怎么做吗?
我想我应该试着更好地解释自己。
public class UserReference {
private int id;
private String name;
}
public class User extends UserReference {
private Address;
}
我想MapUserReference和User,这样当我只需要基本的细节时就可以查询UserReference,而当我需要完整的对象时就可以查询User。
我知道我可以简单地让Address延迟加载,但是我有一个两层系统,一旦它通过层,它就会取消所有对象的代理。
编辑:
也许我的问题太过含糊,但从答案来看,似乎不太可能做到我想要的。无论如何,谢谢大家。
3条答案
按热度按时间b91juud31#
你的问题我不太清楚,但我会尽量按照我的理解来回答。这取决于你真正想要持久化什么,以及你想要什么作为一个java实体。
假设你想用一个数据库表来表示User类,即在JPA中将User表示为实体。现在你可以创建一个嵌入类,它将成为另一个类的一部分。
因此,您可以在User Entity中Map一个Address类,并使用@Embeddable注解包com.thejavageek.embeddabledemo使Address类成为可嵌入的;
你可以像下面这样嵌入这个可嵌入类
m3eecexj2#
UserReference.java
User.java
9cbw7uwe3#
我想你的意思是你有一张table,
和
类似的东西吗
你想有2个
User
实体,其中一个包含对Address的引用,另一个没有(所以它保存SQL连接时间,正如你所说的),我的理解正确吗?如果是这样,你不需要这样做。
只需有一个
User
实体,并将其Address
关系放置为LAZY获取。如果在任何函数中,您需要
User
中的Address
,请执行join fetch。例如
在这种情况下,
User
所有正常检索都不会导致与Address
表的任何联接。然而,它是灵活的,