Java 对于这种情况,什么是正确的注释。JPA。冬眠

Java 对于这种情况,什么是正确的注释。JPA。冬眠,java,hibernate,jpa,Java,Hibernate,Jpa,我将创建包含对象的表。对象应显示为表中的列。(+公共、私人) 如果你想把所有的对象(实体)保存在CasePoice中的一个表中(但是最好的做法是一个正常的数据库设计,你应该考虑在单独的表中的公司部门和工人)你有冗余的数据,你的表数据看起来像这样……/P> 1 comp1 1 dep1 1 worker1 1 comp1 1 dep1 2 worker2 1 comp1 2 dep2 3 worker3 那么正确的jpa注释是: @XmlAccessorType(XmlAccessType.

我将创建包含对象的表。对象应显示为表中的列。(+公共、私人)


如果你想把所有的对象(实体)保存在CasePoice中的一个表中(但是最好的做法是一个正常的数据库设计,你应该考虑在单独的表中的公司部门和工人)你有冗余的数据,你的表数据看起来像这样……/P>

1 comp1 1 dep1 1 worker1

1 comp1 1 dep1 2 worker2

1 comp1 2 dep2 3 worker3
那么正确的jpa注释是:

@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Table(name="company")
public class Company{
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @XmlAttribute(name="idComapny")
    @Column (name="idCompany")
    private int idcompany;

    @XmlElement(name="companyName")
    @Column (name="companyName")
    private String companyName;

   **@Embedded**
   private Department department;

   **@Embedded**
   private Worker worker;//can be removed and put in Department but result is the same
......
并将注释@embeddeble放在部门实体和工作者实体的顶部

@XmlRootElement(name="Department")
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Embeddable
@Table(name="Department")
public class Department {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @XmlAttribute(name="idDepartment")
    @Column (name="idDepartment")
    private int idDepartment;

    @XmlElement(name="departmentName")
    @Column (name="deparmentName")
    private String departmentName;

如果你想把所有的对象(实体)保存在CasePoice中的一个表中(但是最好的做法是一个正常的数据库设计,你应该考虑在单独的表中的公司部门和工人)你有冗余的数据,你的表数据看起来像这样……/P>

1 comp1 1 dep1 1 worker1

1 comp1 1 dep1 2 worker2

1 comp1 2 dep2 3 worker3
那么正确的jpa注释是:

@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Table(name="company")
public class Company{
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @XmlAttribute(name="idComapny")
    @Column (name="idCompany")
    private int idcompany;

    @XmlElement(name="companyName")
    @Column (name="companyName")
    private String companyName;

   **@Embedded**
   private Department department;

   **@Embedded**
   private Worker worker;//can be removed and put in Department but result is the same
......
并将注释@embeddeble放在部门实体和工作者实体的顶部

@XmlRootElement(name="Department")
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Embeddable
@Table(name="Department")
public class Department {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @XmlAttribute(name="idDepartment")
    @Column (name="idDepartment")
    private int idDepartment;

    @XmlElement(name="departmentName")
    @Column (name="deparmentName")
    private String departmentName;

您所说的“像表格中的列一样显示”是什么意思?您能用当前的结果更新您的问题吗?它可能会帮助人们帮助您:)我的意思是,所有实体(列)都应该通过sql请求“select*from company”@EldarNezametdinov显示。如果我理解,您希望数据库中只有一个表吗?为什么?一般来说,这不是一个好的做法。。。你有什么特别的限制吗?@Nizil,我以前没有练习过JPA。是的,我知道这不是常态。可以为每个实体创建表。我需要的工作版本(加入、继承、可嵌入)并不重要。对于这三个实体,我不能用任何方法来做。你所说的“像表格中的列一样显示”是什么意思?你能用你当前的结果更新你的问题吗?它可能会帮助人们帮助您:)我的意思是,所有实体(列)都应该通过sql请求“select*from company”@EldarNezametdinov显示。如果我理解,您希望数据库中只有一个表吗?为什么?一般来说,这不是一个好的做法。。。你有什么特别的限制吗?@Nizil,我以前没有练习过JPA。是的,我知道这不是常态。可以为每个实体创建表。我需要的工作版本(加入、继承、可嵌入)并不重要。我不能用任何方法,为三个实体。