안녕하세요. 나는 CriteriaQuery 테이블에서 행을 선택하려고합니다. CriteriaQuery를 사용JPA CriteriaQuery : 개체 필드가 매핑되지 않았습니다.
@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;
}
}
선택 행 :
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
에서
나는 객체 Card
있습니다.
링크 단위 :
"SELECT * FROM bank_cards WHERE number='" + cardNumber + "'"
에 cardNumber - 문자열
메타 모델 클래스 : 나는 다음 쿼리를 실행해야
<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>
@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_class (영문)를 보여주십시오. –
@PaulWasilewski 위에 추가했습니다. – Evgeniy175
오류 스택 트레이스? – jklee