Java 通过反射访问持久属性X的字段X时出错
我有两门课,TransportOrder和Lardisender。它由字段Java 通过反射访问持久属性X的字段X时出错,java,mysql,jpa,spring-boot,Java,Mysql,Jpa,Spring Boot,我有两门课,TransportOrder和Lardisender。它由字段innerId限定,我只想列出lardisenderdorder表中的所有记录,但出现了此错误 Error accessing field [private java.lang.Integer com.example.model.LardiSendedOrder.innerId] by reflection for persistent property [com.example.model.LardiSendedOrde
innerId
限定,我只想列出lardisenderdorder表中的所有记录,但出现了此错误
Error accessing field [private java.lang.Integer com.example.model.LardiSendedOrder.innerId] by reflection for persistent property [com.example.model.LardiSendedOrder#innerId] : 1;
类别运输令
@Entity
class TransportOrder {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String url;
private String source;
private String transport;
private Date start_date;
private Date end_date;
private String start_address;
private String end_address;
private ArrayList<String> phones =new ArrayList<>()
private Integer distance;
private String content;
private String weight;
private String size;
private Boolean fromVendor;
private ArrayList<PaymentType> payment_type = new ArrayList<PaymentType>();
private Double payment;
private String payment_by;
private ArrayList<PaymentEvent> payment_event = new ArrayList<PaymentEvent>();
private Date add_date;
@NotNull
@Column(unique=true)
private Integer hashCode;
LardiSendedOrder getLardiSendedOrder() {
return lardiSendedOrder
}
void setLardiSendedOrder(LardiSendedOrder lardiSendedOrder) {
this.lardiSendedOrder = lardiSendedOrder
}
@OneToOne
@JoinColumn(
/* referencedColumnName = "innerId"*/
referencedColumnName = "innerId"
)
private LardiSendedOrder lardiSendedOrder;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
//another getters and setters omitted
}
我只是打电话
ArrayList<LardiSendedOrder> orders = (ArrayList<LardiSendedOrder>) lardiSendedOrderRepository.findAll();
ArrayList orders=(ArrayList)lardisendorderrepository.findAll();
为什么不按其id(即id
字段)映射lardisenderder
?事实上,JPA提供者必须假设innerId
可能为null或非唯一(即使这可能与您得到的错误直接相关)那么,Lardisenderder
和TransportOrder
是如何关联的呢?它们位于不同的层次结构中,因此可能也代表不同的表。另外,如果innerId
是transportOrder
的id,那么映射的位置在哪里?我不会映射它,因为不是所有的transportOrder都会在lardiseedOrder中有相应的记录。Lardisender和TransportOrder有何关联我有很多订单,其中一些订单将在Lardisenderder中有记录,因此它们与transportOrder.id=Lardisenderder.innerId相关。我使用注释@JoinColumn(ReferencedColumnName=“innerId”)
指定了这一点,也许我错了?我仍然不明白您要做什么。如果不是每个lardisenderder
都有一个TransportOrder
,那么只需将该关系设为空即可。如果不是每个TransportOrder
都有相应的lardisenderder
,那么也要使该关系单向。是的,我通过阅读更多示例来解决它。问题出在我对mappedBy
指令的错误理解上,所以我对代码做了一些修改,所有的工作都很好)
ArrayList<LardiSendedOrder> orders = (ArrayList<LardiSendedOrder>) lardiSendedOrderRepository.findAll();