ManyToOne与非持久性实体的关系

时间:2015-07-16 18:53:23

标签: java spring hibernate jpa annotations

我想知道您是否可以建立与Hibernate以外的实体的连接,或者是否有任何方法可以在代码中模拟它。像这样:

主要课程:

@Entity
@Table(name = "marter_table")
public class MasterEntity {

    @Id
    @GeneratedValue
    @Column(name="id")      
    private Integer id;

    //@ManyToOne ??
    //@JoinColumn(name = "??", nullable = false)???
    private Foo foo;

    //Getters & setters
}

相关课程:

public class Foo {

    private String code;

    private String name;

    //Getters & setters
}

道:

//DAO
@Component
public class FooDAOImpl implements FooDAO {

    private static Map<String, Foo> FOO = null;


    private final void initFoo() {
        FOO = new HashMap<String, Foo>();

        Foo f1 = new Foo("1", "foo1");
        Foo f2 = new Foo("2", "foo2");
        Foo f3 = new Foo("3", "foo3");

        FOO.put("1", f1);
        FOO.put("1", f2);
        FOO.put("3", f3);
    }

    public final List<Fii> getAll(){

        List<Foo> fooList = new ArrayList<Foo>();
        if (FOO == null) {
            initFoo();
        }

        for (Map.Entry<String, Foo> e : FOO.entrySet()) {
           fooList.add(e.getValue());
        }

        return fooList;
    };  

    public final Foo getByCode(String code) {
        if (FOO == null) {
            initFoo();
        }

        return FOO.get(code);
    };
}

您可以使用Foo类创建ManyToOne吗?或者,如果他恢复数据库,只需通过代码设置就可以保持持久性。

与未从数据库检索的实体建立关系的任何其他解决方案。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用@Transient注释标记非持久性实体。

@Transient
private Foo foo;

这样Hibernate应该忽略它并停止尝试坚持它。