我正在查看一些与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输出,因为它是敏感的