Я установил соединение с базой данных в Wildfly без каких-либо проблем, и соединение работает.
Я создаю клон Twitter, но при попытке получить доступ к БД я получаю сообщение об ошибке:
Вызывается: org.postgresql.util.PSQLException: ОШИБКА: отношение "твит"
не существует
JPA, похоже, не создает схему автоматически. Запуск аналогичного кода в другом проекте автоматически создает схемы сущностей. Я очень растерялся относительно того, что здесь происходит.
У меня есть базовая твит-сущность
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.Serializable;
@Entity
@XmlRootElement
public class Tweet implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String tweet;
private String user;
public Tweet() {}
public Tweet(String tweet, String user) {
this.tweet = tweet;
this.user = user;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTweet() {
return tweet;
}
public void setTweet(String tweet) {
this.tweet = tweet;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}
И DAO использует следующий код для доступа к данным:
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import java.util.List;
@Stateless
public class TweetDaoImpl implements TweetDao {
@PersistenceContext
EntityManager em;
@Override
public Tweet insertTweet(Tweet tweet) {
em.persist(tweet);
return tweet;
}
@Override
public List<Tweet> getUserTweets(String user) {
Query query = em.createQuery("SELECT tweet FROM Tweet tweet WHERE tweet.user = :user");
query.setParameter("user", user);
return query.getResultList();
}
@Override
public List<Tweet> getAllTweets() {
Query query = em.createQuery("SELECT tweet FROM Tweet tweet");
return query.getResultList();
}
@Override
public Tweet updateTweet(int id, Tweet tweet) {
return null;
}
@Override
public Tweet deleteTweet(int id) {
return null;
}
}
Есть идеи, что случилось?