簡體   English   中英

懶加載“JOINED”集合

[英]Lazy load “JOINED” collection

我有實體跟隨實體:
Employee extends Person
CompanyList<Employee> (延遲加載)。

當我嘗試使用Hibernate.initialize(company.getEmployees());初始化員工列表時Hibernate.initialize(company.getEmployees()); 我收到一個錯誤,因為hibernate不理解Employee是一個Person

Person.java

@Entity
@Table(name = "person")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Person implements java.io.Serializable {
    @Column(name = "person_id")
    protected Long personId;

    @Column(name = "name")
    protected String name;

    @Column(name = "age")
    protected String age;
}

Employee.java

@Entity
@Table(name = "employee")
@PrimaryKeyJoinColumn(name = "person_id")
public class Employee extends Person {
    @Column(name = "employee_number")
    private String number;

    @ManyToOne
    @JoinColumn(name = "company_id")
    private Company company;
}

Company.java

@Entity
@Table(name = "company")
public class Company implements java.io.Serializable {
    @Column(name = "company_id")
    protected String id;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "company", cascade = CascadeType.ALL)
    @OrderBy(clause = "name desc")
    protected List<Employee> employees = new ArrayList<Employee>();
}


Hibernate.initialize(company.getEmployees());

例外:

org.postgresql.util.PSQLException: ERROR: column employee0_.name does not exist
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)

對於這種情況,是否有任何延遲加載的解決方案?

員工和個人之間肯定存在一對一的關系。 通過在Java中分割對象而不是在表中分割對象是有意義的。 我認為Employee表應該在person表中定義名稱和其他列以簡化設計。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM