JPA: query to get results based on value of foreign key defined in the entity class?
Netbean 6.9 generated the following JPA entity class from this SQL Server 2008 table:
I want to get all the ProductDescriptors that have a specific SKU value. Something like this:
SELECT * FROM ProductDescriptors WHERE SKU='something'
Given the entity class, what's the Java code to get the results?
Thanks.
@Entity
@Table(name = "ProductDescriptors")
@NamedQueries({
@NamedQuery(name = "ProductDescriptors.findAll", query = "SELECT p FROM ProductDescriptors p"),
@NamedQuery(name = "ProductDescriptors.findByDescriptorID", query = "SELECT p FROM ProductDescriptors p WHERE p.descriptorID = :descriptorID"),
@NamedQuery(name = "ProductDescriptors.findByLanguageCode", query = "SELECT p FROM ProductDescriptors p WHERE p.languageCode = :languageCode"),
@NamedQuery(name = "ProductDescriptors.findByTitle", query = "SELECT p FROM ProductDescriptors p WHERE p.title = :title"),
@NamedQuery(name = "ProductDescriptors.findByIsDefault", query = "SELECT p FROM ProductDescriptors p WHERE p.isDefault = :isDefault"),
@NamedQuery(name = "ProductDescriptors.findByBody", query = "SELECT p FROM ProductDescriptors p WHERE p.body = :body")})
public class ProductDescriptors implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "DescriptorID")
private Integer descriptorID;
@Basic(optional = false)
@Column(name = "LanguageCode")
private String languageCode;
@Basic(optional = false)
@Column(name = "Title")
private String title;
@Basic(optional = false)
@Column(name = "IsDefault")
private boolean isDefault;
@Basic(optional = false)
@Column(name = "Body")
private String body;
@JoinColu开发者_运维百科mn(name = "SKU", referencedColumnName = "SKU")
@ManyToOne(optional = false)
private Products products;
...
Something like this:
@PersistenceContext( unitName = "youPersistenceUnitHere" )
private EntityManager _entityManager;
public List<ProductDescriptors> getProductDescriptorsBySku( String sku ) {
Query query = _entityManager.createQuery( "Select ProductDescriptors from ProductDescriptors pd where pd.products.sku = ?1" );
query.setParameter( 1, sku );
return new ArrayList<ProductDescriptors>( query.getResultList() );
}
精彩评论