JPA-Felder Zuordnen-Objekt ohne Erstellen von Tabellen in DB
Ich bin mit JPA, JSF, Spring.
Manchmal habe ich native SQL-Anweisungen aus, die ich habe zu verwenden. Sie sind in der Regel verbunden mit anderen Tabellen. Ich will nicht zum erstellen von Tabellen in der DB für diesen Zweck und ich möchte nicht anzeigen Feld Objekt meiner eigenen. Also, für dieses PPV hat und ResultSetMapping aber Sie haben Entity und Entity-Tabelle erstellt in der DB.
Wie kann die Verwendung der JPA-map-Feld, um Objekt für meine ohne Kisten-Tabelle(keine Person) oder was auch immer in der DB einfach?
Hier ist eine einfache, kratz-code.
Dank
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.FieldResult;
import javax.persistence.Id;
import javax.persistence.SqlResultSetMapping;
@SqlResultSetMapping(
name="CustomerResultSetMapping",
entities = @EntityResult(
entityClass = Customer.class,
fields = {
@FieldResult( name ="LONG_ID" , column ="LONG_ID" ),
@FieldResult( name ="STRING_NAME" , column ="STRING_NAME" ),
@FieldResult( name ="STRING_ADDRESS" , column ="STRING_ADDRESS" ),
@FieldResult( name ="BIGDECIMAL_PRICE" , column ="BIGDECIMAL_PRICE" ),
@FieldResult( name ="INT_AGE" , column ="INT_AGE" )
}
)
)
@Entity
public class Customer {
@Id Long LONG_ID ;
@Column String STRING_NAME = "";
@Column BigDecimal BIGDECIMAL_PRICE = BigDecimal.ZERO;
@Column Integer INT_AGE = 0;
///////getters and setters
}
Dao abrufen von Daten mit Systemeigenen Oracle-SQL
public List getCustomerAddress(Long customerId) {
try {
String sql = "" +
" SELECT LONG_ID," +
" STRING_NAME," +
" A.ADDRESS AS STRING_ADDRESS," +
" INT_AGE," +
" ( PRICE * NUM_TIME * (CASE WHEN NUM_TIME = 0 THEN 1 WHEN NUM_TIME IS NULL THEN 1 ELSE NUM_TIME END)) AS BIGDECIMAL_PRICE" +
" FROM T_CUSTOMER C, T_ADDRESS A" +
" WHERE C.ADDRESS_ID = A.ID AND C.ID = :CUSTOMER_ID" +
" ";
Query query = entityManager.createNativeQuery(sql,"CustomerResultSetMapping");
query.setParameter("CUSTOMER_ID", customerId);
List resultList = query.getResultList();
return resultList;
} catch (Exception e) {
logger.error(e);
return null;
}
}
- Hast du eine Lösung gefunden ?
- Ja. Ich habe meine Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist meine funktionierende Lösung.
Integer, Float, Long,... muss BigDecimal
DAO abrufen von Daten mit Systemeigenen Oracle-SQL
Können Sie versuchen,
dann
zurückkehren sollte, Liste
Benötigen Sie entsprechende Konstruktor für die Klasse PojoCustomer natürlich.
Ruhezustand: