有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在hibernate实体中使用瞬态字段作为映射的键?

我需要有一个项目的映射,但我需要设置“键”的项目是暂时的,hibernate无法将其设置为“键”。我怎么做

@Entity
@AssociationOverrides({
        @AssociationOverride(name = "rela.city", 
                         joinColumns = @JoinColumn(name = "cityId")),
        @AssociationOverride(name = "rela.person", 
                         joinColumns = @JoinColumn(name = "id")),
        @AssociationOverride(name = "rela.social", 
                         joinColumns = @JoinColumn(name = "code")) })
public class Person implements java.io.Serializable {
    @EmbeddedId
    private RelationshipId rela = new RelationshipId();

    @Transient
    public String getCode(){
         return rela.getSocial().geCode();
    }
    ....
}

@Entity
public class City implements java.io.Serializable {
    @OneToMany(fetch = FetchType.LAZY, 
               mappedBy = "rela.city", cascade = CascadeType.ALL)
    @MapKey(name = "code")
    Map<String, Person> People = new HashMap<>();
    ....
}

正如您所看到的,我想使代码成为映射的键,但它不起作用,因为代码是瞬态的


共 (0) 个答案