2011-05-19 111 views
0

我有一个类Person可以有4种类型的地址,并且可以有多个地址对应一种类型的地址。HiberNate在一对多映射中使用注释过滤器

public class Person{ 
Set<Address> addresses; 
} 

public class Address{ 
private int phoneNumber; 
private Type addressType; 
} 

public Enum Type{ 
Buisness, 
Personal, 
X, 
Y 
} 

所以我想实现的是,当一个人对象填充特定类型的Addesses的名单应该与特定类型的地址来填充。然而,我想指定在运行时填充哪种类型的地址。 我认为它可能通过hibernate过滤XML配置,但我想只用注释来实现它。

回答

0

您可以使用@Filter annotations在运行时过滤数据。

public class Person{ 

    @Filter(name="filterAddressType", condition=":addressType = addressType") 
    Set<Address> addresses; 
} 

并在运行时,您可以通过会话应用过滤器的数据如下:

session.enableFilter("filterAddressType").setParameter("addressType ", "Home");