J'ai une requête qui fonctionne en SQL normal, mais qui ne fonctionne pas sur JPA et ne peut pas comprendre pourquoi. Comme vous pouvez le deviner à partir du titre, j'ai un indice mais je ne sais pas comment le "réparer".Colonne de jointure JPA avec des valeurs nulles
Voici le code réelles importantes:
@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;
Et voici le sql travail:
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;
Et voici ce que j'essaie de faire:
SELECT xca FROM XincoCoreAce xca WHERE xca.xincoCoreUserId.id = 1 ORDER BY xca.xincoCoreUserId.id, xca.xincoCoreGroupId.id, xca.xincoCoreNodeId.id, xca.xincoCoreDataId.id
La question, Je pense, est que le xca.xincoCoreUserId.id, xca.xincoCoreGroupId.id, xca.xincoCoreNodeId.id, xca.xincoCoreDataId.id peut être nul ls.
Une idée? J'espère que c'est plus facile à lire: P
De manière générale, faire un vidage de code dans une question est une mauvaise idée. Vous devriez réduire ce code au strict minimum pour démontrer le problème. Si c'est plus facile à lire et à comprendre (et donc c'est beaucoup plus susceptible d'être lu et répondu) et, si rien d'autre, cela démontre que vous avez fait des efforts. – cletus
Merci pour les commentaires, c'est juste ma deuxième question et le premier avec le code correspondant. l'espoir est plus propre maintenant. – javydreamercsw