Java Hibernate:如何将R中的不同选择器(选择器,键,*)映射到不同的字段?

Java Hibernate:如何将R中的不同选择器(选择器,键,*)映射到不同的字段?,java,hibernate,orm,Java,Hibernate,Orm,请让我看看代码 @Entity class R { @Id Long id; String selector; long fkey; // other columns... } @Entity class Foo { @Id Long id; // select * from R where selector='A' and fkey=Foo_id @OneToMany Set<R> aSet

请让我看看代码

@Entity
class R {
    @Id
    Long id;

    String selector;

    long fkey;

    // other columns...
}

@Entity
class Foo {

    @Id
    Long id;

    // select * from R where selector='A' and fkey=Foo_id
    @OneToMany
    Set<R> aSet;

    // select * from R where selector='B' and fkey=Foo_id
    @OneToMany
    Set<R> bSet;
}
或者像这样的

@Entity
class Foo {

    @Id
    Long id;

    @OneToMany
    @RestrictJoin("selector = 'A'")
    Set<R> aSet;

    @OneToMany
    @RestrictJoin("selector = 'B'")
    Set<R> bSet;
}
@实体
福班{
@身份证
长id;
@独身癖
@RestrictJoin(“选择器='A'”)
设定aSet;
@独身癖
@RestrictJoin(“选择器='B'”)
设置bSet;
}

好的,提前谢谢。

一个选项是@Filter注释,请看:。下面是一个关于如何使用它们的好例子:

过滤器不需要参数,请查看另一个示例:

请注意,您需要为每个会话启用筛选器,您可以使用筛选器来执行此操作:

如果你决定去每个选择器的一个类,你可能想考虑继承和@判别器列注释,比如:


一个选项是@Filter注释,请查看:。下面是一个关于如何使用它们的好例子:

过滤器不需要参数,请查看另一个示例:

请注意,您需要为每个会话启用筛选器,您可以使用筛选器来执行此操作:

如果你决定去每个选择器的一个类,你可能想考虑继承和@判别器列注释,比如:


如果您想存储另一个表中的一组内容,也许类似于此的东西会有用

@org.hibernate.annotations.CollectionOfElements
@JoinTable (name = "R_A", joinColumns = @JoinColumn(name="ra_id", referencedColumnName="id"))
@org.hibernate.annotations.MapKey (columns = @Column(table = "R_A", name = "key_content"))
@Column(table = "R_A", name = "value_content")
private Map<String, String> raData = new HashMap<String, String>();
@org.hibernate.annotations.collectionfements
@JoinTable(name=“R\u A”,joinColumns=@JoinColumn(name=“ra\u id”,referencedColumnName=“id”))
@org.hibernate.annotations.MapKey(columns=@Column(table=“R\u A”,name=“key\u content”))
@列(table=“R\u A”,name=“value\u content”)
私有映射raData=新HashMap();

如果您想存储另一个表中的一组内容,也许类似的东西会有用

@org.hibernate.annotations.CollectionOfElements
@JoinTable (name = "R_A", joinColumns = @JoinColumn(name="ra_id", referencedColumnName="id"))
@org.hibernate.annotations.MapKey (columns = @Column(table = "R_A", name = "key_content"))
@Column(table = "R_A", name = "value_content")
private Map<String, String> raData = new HashMap<String, String>();
@org.hibernate.annotations.collectionfements
@JoinTable(name=“R\u A”,joinColumns=@JoinColumn(name=“ra\u id”,referencedColumnName=“id”))
@org.hibernate.annotations.MapKey(columns=@Column(table=“R\u A”,name=“key\u content”))
@列(table=“R\u A”,name=“value\u content”)
私有映射raData=新HashMap();