Я использую этот код, чтобы сделать запрос к базе данных SQL Server:JPA запрос возвращает Object [] вместо желаемого объекта
List<Continent> continents = new ArrayList<>();
List<Object[]> tuples = (List<Object[]>) em.createNativeQuery("SELECT * FROM Continents").getResultList();
for (Object[] tuple : tuples) {
System.out.println(tuple[0]);
}
return continents;
Я использую этот код, потому что я не могу получить нужный тип объекта (Continent) прямо из базы данных.
Как должен выглядеть мой запрос?
Это начало моего класса континент:
@Entity
@Table
public class Continent implements Serializable {
@Column(name = "Name")
private StringProperty name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ContinentID")
private IntegerProperty continentId;
@OneToMany(mappedBy="continent")
private Connection connection;
List<Country> countries;
public Continent(String naam) throws SQLException {
name = new SimpleStringProperty(naam);
continentId = new SimpleIntegerProperty();
}
protected Continent()
{}
Это мой persistence.xml файл:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="HOGENT1415_11" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>domain.Continent</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost:1433;databaseName=HOGENT1415_11"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="javax.persistence.jdbc.password" value="root"/>
</properties>
</persistence-unit>
</persistence>
Это дает мне эту ошибку: Вызванный: Exception [EclipseLink-4002] (Eclipse, послесвечение услуги - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException Внутренняя Исключение: com.microsoft.sqlserver .jdbc.SQLServerException: Недопустимое имя столбца 'c'. –
является 'Континент' фактически' Entity', т. Е. Аннотируется с '@ Entity' и имеет свойство, помеченное как' @ Id'? – Vladimir
Да, я отредактировал OP, чтобы показать это –