我有一個查詢,在普通的SQL中工作,但不是在JPA上工作,並找不到原因。正如你可以從標題中猜出的,我有一個線索,但我不知道如何「修復」它。JPA加入空值列
下面是實際的重要代碼:
@Id
@Basic(optional = false)
@Column(name = "id", nullable = false)
private Integer id;
@Basic(optional = false)
@Column(name = "read_permission", nullable = false)
private boolean readPermission;
@Basic(optional = false)
@Column(name = "write_permission", nullable = false)
private boolean writePermission;
@Basic(optional = false)
@Column(name = "execute_permission", nullable = false)
private boolean executePermission;
@Basic(optional = false)
@Column(name = "admin_permission", nullable = false)
private boolean adminPermission;
@JoinColumn(name = "xinco_core_data_id", referencedColumnName = "id", nullable=true)
@ManyToOne(fetch = FetchType.LAZY)
private XincoCoreData xincoCoreDataId;
@JoinColumn(name = "xinco_core_group_id", referencedColumnName = "id", nullable=true)
@ManyToOne(fetch = FetchType.LAZY)
private XincoCoreGroup xincoCoreGroupId;
@JoinColumn(name = "xinco_core_node_id", referencedColumnName = "id", nullable=true)
@ManyToOne(fetch = FetchType.LAZY)
private XincoCoreNode xincoCoreNodeId;
@JoinColumn(name = "xinco_core_user_id", referencedColumnName = "id", nullable=true)
@ManyToOne(fetch = FetchType.LAZY)
private XincoCoreUser xincoCoreUserId;
而這裏的工作SQL:
select * from xinco_core_ace where xinco_core_user_id = 1 order by xinco_core_user_id, xinco_core_node_id, xinco_core_data_id;
這裏就是我試圖做的事:
SELECT xca FROM XincoCoreAce xca WHERE xca.xincoCoreUserId.id = 1 ORDER BY xca.xincoCoreUserId.id, xca.xincoCoreGroupId.id, xca.xincoCoreNodeId.id, xca.xincoCoreDataId.id
問題,我認爲,xca.xincoCoreUserId.id,xca.xincoCoreGroupId.id,xca.xincoCoreNodeId.id,xca.xincoCoreDataId.id可以是nul LS。
有什麼想法?希望更容易閱讀:P
一般來說,在一個問題中做代碼轉儲是一個壞主意。您應該儘量減少代碼以證明問題。如果讓閱讀和理解更容易(因此閱讀和回答的可能性更大),如果沒有其他內容,則表明您已經付出了一些努力。乾杯。 – cletus 2009-11-03 14:37:19
感謝您的反饋意見,這只是我的第二個問題,並且是第一個與相關代碼相關的問題。希望現在更清潔。 – javydreamercsw 2009-11-03 14:57:54