JPA和JAXB:特别是JaxB和JPA并发症:为什么我需要私有和公共修饰符?

时间:2015-03-14 03:01:29

标签: jpa jaxb

我正在查看一些与JPA映射的实体的遗留代码。该对象也通过JaxB转换为XML。我是JPA和JaxB的新手。下面是代码片段:

@Entity
@Audited
@Table(name = "TTRANSACTION_ITEM")
@DiscriminatorColumn()
public class TransactionItem {
    @Transient

    private Order order;
    private List<Comment> comments;
    private List<Attachment> attachments;

    @XmlTransient
    private Timestamp lastPrintDate;
    private String createdBy;

    @XmlTransient
    private Timestamp creationDate;

    @XmlTransient
    private Timestamp lastUpdateDate;
    private String lastUpdateBy;
    private int isSendDiploma;

    @Transient
    private Student aStudent;

// NOTE, I'm forced to make THESE TWO PUBLIC or else i won't show in XML:

@Transient
public  String studentFirstName;

@Transient
public  String studentLastName;

...
...
}

问题:

1) 生成的xml文件中的元素名称是否来自数据库表的字段?例如,在生成的xml文件中,我看到sendDiploma而不是isSendDiploma。

2) 为什么实例变量需要私有?我将其更改为public或protected,该元素不会出现在XML中。奇怪的是,如果我想在java代码中包含额外的变量(例如(studentFirstName)到xml),我需要使用public。例如public String studentFirstName。因为我不希望studentFirstName在数据库中,所以我使用@Transient。我添加了studentFirstName,因为无论出于何种原因,我都没有看到任何包含&#34; aStudent&#34;它的值如firstName和lastName。

3)为什么XML中的元素顺序是不可预测的?订单来自哪里?我没有看到任何用于指示排序的JaxB注释。不幸的是,我不能在这里包含xml输出,因为它是敏感的

0 个答案:

没有答案