有这样一个表结构。
@Table(name="FOO")
public class Foo {
@Id
@GeneratedValue
private Long id;
@Column(name="code")
private String code;
@Column(name="serial_no")
private String serialNo;
@Column(name="content")
private String Content; @Column(name="regist_name")
private String registName;
@Column(name="regist_date")
private Date registDate;
...
FOO
-----------
id code serial_no content regist_id regist_date
1 1001 00001 Apple test 20130101
2 1001 00001 Banana test 20130102
3 1001 00001 Orange test 20130104
4 1002 00001 TV test 20130101
.....MASTER
------------
id code name
1 1001 Fruit
2 1002 ELECTRICAL我想在获取Foo的时候,多获得两个内容
1. 从MASTER表中获得code相应的name
2. previous content,即code,serial_no相同上一个regist_date的content。
例如,对于id=3的数据,previous content=Banana。对于第一个问题,我使用Formula应该可以实现,不过感觉不是很好。
即使使用Lazy,这句expression也会在查询Foo的时候出现在sql里面
@Formula("(select m.name from master m where m.code = code)")
@Basic(fetch=FetchType.LAZY)
private String name;
请问有没有其他好的解决办法?
用@transient可以吗?对于第二个问题,请问有什么好的解决办法吗?
@Table(name="FOO")
public class Foo {
@Id
@GeneratedValue
private Long id;
@Column(name="code")
private String code;
@Column(name="serial_no")
private String serialNo;
@Column(name="content")
private String Content; @Column(name="regist_name")
private String registName;
@Column(name="regist_date")
private Date registDate;
...
FOO
-----------
id code serial_no content regist_id regist_date
1 1001 00001 Apple test 20130101
2 1001 00001 Banana test 20130102
3 1001 00001 Orange test 20130104
4 1002 00001 TV test 20130101
.....MASTER
------------
id code name
1 1001 Fruit
2 1002 ELECTRICAL我想在获取Foo的时候,多获得两个内容
1. 从MASTER表中获得code相应的name
2. previous content,即code,serial_no相同上一个regist_date的content。
例如,对于id=3的数据,previous content=Banana。对于第一个问题,我使用Formula应该可以实现,不过感觉不是很好。
即使使用Lazy,这句expression也会在查询Foo的时候出现在sql里面
@Formula("(select m.name from master m where m.code = code)")
@Basic(fetch=FetchType.LAZY)
private String name;
请问有没有其他好的解决办法?
用@transient可以吗?对于第二个问题,请问有什么好的解决办法吗?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货