美好的一天。我嘗試用CriteriaQuery從表中選擇行。JPA CriteriaQuery:對象的字段未映射
我有一個對象Card
:
@Entity(name = "bank_cards")
public class Card {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToMany(mappedBy = "cards")
private Set<Account> accounts;
private String number;
private float amount;
private String expire;
private String type;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public float getAmount() {
return amount;
}
public void setAmount(float amount) {
this.amount = amount;
}
public String getExpire() {
return expire;
}
public void setExpire(String expire) {
this.expire = expire;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Set<Account> getAccounts() {
return accounts;
}
public void setAccounts(Set<Account> accounts) {
this.accounts = accounts;
}
}
使用CriteriaQuery中選擇行:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("cards");
EntityManager em = emf.createEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Card> cq = cb.createQuery(Card.class);
Metamodel m = em.getMetamodel();
EntityType<Card> Card_ = m.entity(Card.class);
Root<Card> card = cq.from(Card.class);
cq.where(card.get(Card_.number)); // error
在最後一個字符串場number
沒有找到。
鏈接單元:
<persistence-unit name="users" transaction-type="RESOURCE_LOCAL">
<class>main.java.entities.User</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/java" />
<property name="javax.persistence.jdbc.user" value="java" />
<property name="javax.persistence.jdbc.password" value="java" />
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
</properties>
</persistence-unit>
我需要執行一個查詢:
"SELECT * FROM bank_cards WHERE number='" + cardNumber + "'"
cardNumber - 串
元模型類:
@StaticMetamodel(Card.class)
public class Card_ {
public static volatile SingularAttribute<Card, Integer> id;
public static volatile SingularAttribute<Card, String> number;
public static volatile SingularAttribute<Card, String> expire;
public static volatile SingularAttribute<Card, String> type;
public static volatile SingularAttribute<Card, Float> amount;
public static volatile SetAttribute<Card, Account> accounts;
}
向我們展示您的元模型Card_類。 –
@PaulWasilewski我現在在上面加了 – Evgeniy175
Error stacktrace? – jklee