2013-12-16 3 views
0

У меня есть рефлексивное поле в mysql (да, с внешним ключом, указывающим на ту же таблицу).query manytoOne field

Этот продукт является продуктом, а внешний ключ должен сообщать мне, является ли продукт частью пакета (это дизайнерское решение).

 @Column(name = "servicio") 
    private Boolean servicio; 
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "productosidProductos") 
    private List<Productos> productosList; 
    @JoinColumn(name = "productos_idProductos", referencedColumnName = "idProductos") 
    @ManyToOne(optional = false) 
    private Productos productosidProductos; 


@Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "idProductos") 
    private Integer idProductos; 

и я получаю это один

Проблема с компиляцией [SELECT FROM е Productos е РЕГИСТРИРУЙТЕСЬ e.productosidProductos р РЕГИСТРИРУЙТЕСЬ e.productosidProductos p2 WHERE p2.productosidProductos> 0]. [93, 116] Отображение отношения 'p2.productosidProductos' не может быть использован в сочетании с оператором>

при запуске этого

Query paquetesQuery = EclipseLinkUtil.getEntityManagerFactory().createQuery("SELECT e FROM Productos e JOIN e.productosidProductos p JOIN e.productosidProductos p2 WHERE p2.productosidProductos > 0"); 

это работает очень хорошо

Query paquetesQuery = EclipseLinkUtil.getEntityManagerFactory().createQuery("SELECT e FROM " 
      + "Productos e WHERE e.productosidProductos IS NOT NULL"); 

, но мне нужно это, где WHERE e.productosidProductos> 0, потому что, когда продукт не входит в группу, будет 0. большое вам спасибо!

ответ

1

Вы не можете написать это на Java, не так ли?

Productos product = new Productos(...); 
if (product > 0) 

Нет, вы не можете, так как продукт является продуктом. Это не цифра. Поэтому сравнение продукта с 0 не имеет смысла. Но вы делаете это в запросе:

WHERE p2.productosidProductos > 0 

где атрибут productosidProductos имеет тип Productos. Если вы хотите сравнить ID продукта, который является Integer, с 0, то это будет работать:

WHERE p2.productosidProductos.id > 0 
+0

О, мой бог! Большое спасибо, я был слепым, если я не мог видеть этот! я предположил, что p2.productosidProductos был просто свойством не сущностью, но ошибка говорила, что тип был неправильным! – GoAntonio