• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyświetlenie historii przelewów, zły typ danych

VPS Starter Arubacloud
0 głosów
277 wizyt
pytanie zadane 25 października 2018 w Java przez Przemyslaw Użytkownik (610 p.)

Cześć! Tworzę aplikację bankową, której jedną z funkcjonalności jest wyświetlanie historii przelewów klienta.

Aplikację wykonuję przy pomocy Springa oraz Hibernate'a.

Historię chcę wyświetlić w postaci listy. 

Poniżej przedstawiam kod, a w komentarzu dodam błąd(zbyt duża liczba znaków)

View: 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<!DOCTYPE html>

<html>

<head>
	<title>List Customers</title>

	<link rel="stylesheet"
		  href="<c:url value="/resources/css/styles.css" />" >

	<link rel="stylesheet"
		  href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

	<meta http-equiv="refresh" content="<%=session.getMaxInactiveInterval()%>;url=showMyLoginPage"/>
</head>

<body>

	<nav class="navbar navbar-default">
		<div class="container-fluid">
		  <div class="navbar-header">
			<a class="navbar-brand" href="#">
			  <span id="logo">CP</span>
			</a>
		  </div>
		  <div class="title">
			<h3>Client Panel</h3>
			<form:form action="${pageContext.request.contextPath}/logout" 
					   method="POST"
					   id="logout">
                <div id="clockdiv"></div>
	 			<input type="submit" value="Logout" class="btn btn-secondary btn-sm"/>
			</form:form>
		  </div>
		</div>
	  </nav>
		
		<!-- new button: -->
		<div class="col-xs-3 sidebar">
			<div class="sidebar-container">
				<input type="button" value="Make Transfer"
					onclick="window.location.href='makeTransfer'; return false;"
					class="btn btn-primary"
				/>
			</div>
		</div>
		<div class="col-xs-9 main">	
			<!--  add a search box -->
	
		
		<div class="table-container">

			<div class="panel panel-default">
				<!-- Default panel contents -->
				<div class="panel-heading">Panel heading</div>
				
				<!-- Table -->
				<table class="table">
						<tr>
							<th>Amount</th>
							<th>Account Number Sender</th>
						</tr>
						
						<!-- loop over customers -->
						<c:forEach var="tempOrderItems" items="${orderItems}">
						
						<tr>
							<td>${tempOrderItems.amount}</td>
							<td>${tempOrderItems.accountNumberSender}</td>
						</tr>
						</c:forEach>
					</table>
			</div>

		</div>

		</div>
	<script src="<c:url value="/resources/javaScript/logoutTimer.js" />"></script>
</body>

</html>

Controller:

package main.com.java.controller;

import java.util.ArrayList;
import java.util.List;

import main.com.java.service.business.objectUtils.OrderItemFilter;
import main.com.java.service.domain.interfaces.AccountService;
import main.com.java.service.domain.interfaces.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import main.com.java.entity.Account;
import main.com.java.entity.Customer;
import main.com.java.entity.OrderItem;
import main.com.java.service.domain.interfaces.OrderItemService;

@Controller
@RequestMapping("/user")
public class OrderItemController {

    private OrderItemService orderItemService;
    private UsersService usersService;
    private AccountService accountService;

    @Autowired
    public OrderItemController(OrderItemService orderItemService, UsersService usersService, AccountService accountService) {
        this.orderItemService = orderItemService;
        this.usersService = usersService;
        this.accountService = accountService;
    }

    @GetMapping("/makeTransfer")
    public String makeTransfer(Model theModel) {

        OrderItem theOrderItem = new OrderItem();

        theModel.addAttribute("orderitem", theOrderItem);

        return "transfer-form";
    }

    @PostMapping("/saveTransfer")
    public String saveTransfer(@ModelAttribute("orderitem") OrderItem theOrderItem,
                               @ModelAttribute("account") Account account,
                               @RequestParam("accountNumberSender") String Send,
                               @RequestParam("accountNumberReceiver") String Rec,
                               @RequestParam("amount") long amount) {
        orderItemService.saveTransfer(theOrderItem, account, Send, Rec, amount);
        return "redirect:/user/panel";
    }

    @RequestMapping("/panel")
    public String listCustomers(Model theModel) {
        OrderItemFilter orderItemFilter = new OrderItemFilter(usersService, orderItemService, accountService);
        List<OrderItem> theOrderItems = orderItemFilter.getSenderOrderItem();
        theModel.addAttribute("orderItems", theOrderItems);
        return "indexUser";
    }


}

 

OrderItemFiler.getSenderOrderItem():

public List<OrderItem> getSenderOrderItem(){
        try{
            return orderItemService.getOrderItemListSender(getAccountNumber());
        }catch (NullPointerException e){
            e.printStackTrace();
            List<OrderItem> emptyList = new ArrayList<>();
            emptyList.add(new OrderItem(0L,"-","-"));
            return orderItemService.getOrderItems();
        }
    }

 

getOrderItemListSender():

    @Override
	@Transactional
    public List<OrderItem> getOrderItemListSender(String accountNumberSenderValue) {
        String hql = "FROM OrderItem WHERE accountNumberSender=:accountNumberSenderParam";
        Query theQuery = createCurrentSession(sessionFactory).createQuery(hql);
        theQuery.setParameter("accountNumberSenderParam", accountNumberSenderValue);
        System.out.println(theQuery.list());
        return theQuery.list();

    }

 

OrderItemDTO:
 

@Entity
@Table(name="orderitem")
public class OrderItem {
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="orderItemID")
	private long orderItemID;
	
	@Column(name="amount")
	private long amount;
	
	@Column(name="accountNumberSender")
	private String accountNumberSender;
	
	@Column(name="accountNumberReceiver")
	private String accountNumberReceiver;
	
	@ManyToOne
    @JoinColumn(name="accountNumberSender", insertable = false, updatable = false)
    private Account senderAccount;

    @ManyToOne
    @JoinColumn(name="accountNumberReceiver", insertable = false, updatable = false)
    private Account receiverAccount;

	public OrderItem() {}
	
	public OrderItem(long amount, String accountNumberSender, String accountNumberReceiver) {
		this.amount = amount;
		this.accountNumberSender = accountNumberSender;
		this.accountNumberReceiver = accountNumberReceiver;
	}
	
	
	public Account getSenderAccount() {
		return senderAccount;
	}

	public Account getReceiverAccount() {
		return receiverAccount;
	}

	public void setSenderAccount(Account senderAccount) {
		this.senderAccount = senderAccount;
	}

	public void setReceiverAccount(Account receiverAccount) {
		this.receiverAccount = receiverAccount;
	}

	public long getOrderItemID() {
		return orderItemID;
	}
	public void setOrderItemID(long orderItemID) {
		this.orderItemID = orderItemID;
	}
	public long getAmount() {
		return amount;
	}
	public void setAmount(long amount) {
		this.amount = amount;
	}
	public String getAccountNumberSender() {
		return accountNumberSender;
	}
	public void setAccountNumberSender(String accountNumberSender) {
		this.accountNumberSender = accountNumberSender;
	}
	public String getAccountNumberReceiver() {
		return accountNumberReceiver;
	}
	public void setAccountNumberReceiver(String accountNumberReceiver) {
		this.accountNumberReceiver = accountNumberReceiver;
	}

	
}

Tabela orderitem:

CREATE TABLE IF NOT EXISTS `bank_application`.`orderitem` (
  `orderItemID` BIGINT(8) NOT NULL AUTO_INCREMENT,
  `amount` BIGINT(7) NOT NULL,
  `accountNumberSender` VARCHAR(26) CHARACTER SET 'utf8' COLLATE 'utf8_polish_ci' NOT NULL,
  `accountNumberReceiver` VARCHAR(26) CHARACTER SET 'utf8' COLLATE 'utf8_polish_ci' NOT NULL,
  PRIMARY KEY (`orderItemID`),
  INDEX `accountNumberSender` (`accountNumberSender` ASC),
  INDEX `accountNumberReceiver` (`accountNumberReceiver` ASC),
  CONSTRAINT `OrderItem_ibfk_1`
    FOREIGN KEY (`accountNumberSender`)
    REFERENCES `bank_application`.`account` (`accountNumber`)
    ON UPDATE CASCADE,
  CONSTRAINT `OrderItem_ibfk_2`
    FOREIGN KEY (`accountNumberReceiver`)
    REFERENCES `bank_application`.`account` (`accountNumber`)
    ON UPDATE CASCADE)
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_polish_ci;

 

komentarz 25 października 2018 przez Przemyslaw Użytkownik (610 p.)
25-Oct-2018 21:26:54.411 SEVERE [http-nio-8080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [dispatcher] in context with path [] threw exception [Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not execute query] with root cause
 com.mysql.jdbc.exceptions.jdbc4.MySQLDataException: '14128533212703682818813699' in column '2' is outside valid range for the datatype BIGINT.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.Util.getInstance(Util.java:408)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
	at com.mysql.jdbc.ResultSetImpl.throwRangeException(ResultSetImpl.java:7061)
	at com.mysql.jdbc.ResultSetImpl.parseLongAsDouble(ResultSetImpl.java:6381)
	at com.mysql.jdbc.ResultSetImpl.getLong(ResultSetImpl.java:2685)
	at com.mysql.jdbc.ResultSetImpl.getLong(ResultSetImpl.java:2653)
	at com.mysql.jdbc.ResultSetImpl.getLong(ResultSetImpl.java:2738)
	at com.mchange.v2.c3p0.impl.NewProxyResultSet.getLong(NewProxyResultSet.java:477)
	at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$2.doExtract(BigIntTypeDescriptor.java:63)
	at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:261)
	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257)
	at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:247)
	at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:333)
	at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:160)
	at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2854)
	at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1747)
	at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1673)
	at org.hibernate.loader.Loader.getRow(Loader.java:1562)
	at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:732)
	at org.hibernate.loader.Loader.processResultSet(Loader.java:991)
	at org.hibernate.loader.Loader.doQuery(Loader.java:949)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
	at org.hibernate.loader.Loader.doList(Loader.java:2692)
	at org.hibernate.loader.Loader.doList(Loader.java:2675)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2507)
	at org.hibernate.loader.Loader.list(Loader.java:2502)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:392)
	at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
	at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1489)
	at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1445)
	at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1414)
	at main.com.java.dao.implementation.OrderItemDAOImpl.getOrderItemListSender(OrderItemDAOImpl.java:49)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:338)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:197)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
	at com.sun.proxy.$Proxy45.getOrderItemListSender(Unknown Source)
	at main.com.java.service.domain.implementation.OrderItemServiceImpl.getOrderItemListSender(OrderItemServiceImpl.java:34)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:338)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:206)
	at com.sun.proxy.$Proxy47.getOrderItemListSender(Unknown Source)
	at main.com.java.service.business.objectUtils.OrderItemFilter.getSenderOrderItem(OrderItemFilter.java:30)
	at main.com.java.controller.OrderItemController.listCustomers(OrderItemController.java:63)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:871)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:777)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:407)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

 

Czemu rzuca mi błąd o BIGINT, kiedy mam to zadeklarowane jako String?

1 odpowiedź

+1 głos
odpowiedź 25 października 2018 przez mbabane Szeryf (79,280 p.)
Wygląda jakbyś wychodził poza zakres typu BIGINT.
komentarz 27 października 2018 przez Przemyslaw Użytkownik (610 p.)
hmmm no to byłoby dziwne.

Po wyrzuceniu tego, mam problem z dispatcherem.

Aczkolwiek, wszędzie robię te mapowania, we wszystkich innych encjach i to działa. Dodatkowo IDE wykrywa mi to jako wiązanie.
komentarz 27 października 2018 przez Przemyslaw Użytkownik (610 p.)
Dobra, usunąłem też to mapowanie w tym drugim obiekcie.

Iiii... zadziałało.

Teraz już zgłupiałem. Czemu w takim razie w innych encjach, mam te mapowania i jak ich nie miałem, to mi rzucało błąd, a w tym wypadku działało to na szkodę?
komentarz 27 października 2018 przez mbabane Szeryf (79,280 p.)

A jakie dokładnie inne operacje robiłeś?

Aha i jeszcze jedna uwaga techniczna. Do pól encji które mają być kluczem głównym nie stosuj prostego typu long tylko obiektowego Long,. Prymitywy domyślnie inicjalizowane są wartością 0 czyli de-facto jest to jakaś wartość, która może coś sugerować. Natomiast obiektowy typ Long przy inicjalizacji będzie nullem czyli pusty - nie będzie na nic wskazywał:

class WithPrimitiveLong
{
    private long field;

    public long getField()
    {
        return field;
    }
}

class WithObjectiveLong
{
    private Long field;

    public Long getField()
    {
        return field;
    }
}

Przykład użycia:

WithPrimitiveLong primitiveLong = new WithPrimitiveLong();
System.out.println(primitiveLong.getField());

WithObjectiveLong objectiveLong = new WithObjectiveLong();
System.out.println(objectiveLong.getField());

Wyjście:

0
null
komentarz 27 października 2018 przez Przemyslaw Użytkownik (610 p.)
Każda operacja, typu tworzenie konta, użytkownika etc. jest oparta na relacji.

Dziękuję za dobrą radę. Ale nasuwa mi się pytanie, co jest w tym złego że w początkowej inicjalizacji wystąpi 0 zamiast nulla? W tej sytuacji ta wartość i tak jest automatycznie generowana.
1
komentarz 27 października 2018 przez mbabane Szeryf (79,280 p.)

Każda operacja, typu tworzenie konta, użytkownika etc. jest oparta na relacji. 

Tutaj trzeba by się trochę zagłębić w działanie JPA i implementacji czego za bardzo się nie podejmę. Można tylko się domyślać/zgadywać, że to jakoś sobie poradziło z wstawieniem danych. Mogę tylko dopytać jak dokładnie tworzony był obiekt OrderItem do zapisu, bo jeśli pominąłeś, któreś z pól podczas zapisu to być może dlatego działało.

Jeśli chodzi o ten long vs Long to własnie chodzi o to, że null to wartość pusta, która nie jest utrwalona w bazie, natomiast 0 może już istnieć w bazie i może wystąpić problem z ustaleniem czy dana wartość jest nowa, czy już istnieje w bazie. null jest jakby bardziej czytelny i od razu sugeruje, że czegoś nie ma.

 

Podobne pytania

0 głosów
1 odpowiedź 1,856 wizyt
pytanie zadane 10 grudnia 2022 w Java przez letmestay Użytkownik (520 p.)
0 głosów
1 odpowiedź 777 wizyt
0 głosów
1 odpowiedź 3,964 wizyt
pytanie zadane 13 października 2016 w Java przez nemezisso Użytkownik (860 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...