当前位置: 代码迷 >> java >> 与非持久实体的ManyToOne关系
  详细解决方案

与非持久实体的ManyToOne关系

热度:25   发布时间:2023-07-27 09:31:15.0

我想知道您是否可以与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吗? 或者,只要他通过代码设置数据库,就可以恢复数据库,使其持久化。

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

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

@Transient
private Foo foo;

这样,Hibernate应该忽略它并停止尝试保留它。