2016-10-18 3 views
0

내 프로젝트에서 일대 다 매핑을 사용했습니다. 모든 사용자에 대한 클릭 목록을 저장했습니다. 그러나 getClicks() 메서드를 호출하여 목록을 검색 할 때 최대 절전 모드는 다른 형식으로 목록을 반환합니다. 이런 식으로. 최대 절전 1 대 다수 매핑, 매핑 된 목록 인쇄

그래서 나는 목록에서 모든 값을 읽고 새로운 목록에 할당했습니다.

List<Click> clicks=new ArrayList<Click>();  
 
      for(Click c: e.getClicks()){ 
 
     \t Click temp = new Click(); 
 
     \t temp.setAff_source(c.getAff_source()); 
 
     \t temp.setCb_to_award(c.getCb_to_award()); 
 
     \t temp.setCb_type(c.getCb_type());  
 
     \t clicks.add(temp);   \t 
 
      }
하지만 난 새로운 목록의 항목을 인쇄 할 때 스틸 사진 같은 방식으로 인쇄합니다.

이 목록의 결과 문자열에서 JSON을 작성해야합니다. 목록이 형식으로 반환되면 도움이되지 않습니다.

은 내가 Arrays.ToString (객체 O를) 시도 How to pretty print Hibernate query results?

를 제외하고이에 대한 아무 것도 찾을 수 없습니다. 그러나 그것은 효과가 없습니다. 어떤 도움에 감사드립니다 파트 -

Gson gson = new GsonBuilder() 
 
\t \t   .registerTypeAdapter(Click.class, new MyTypeAdapter<Click>()) 
 
\t \t   .create(); 
 
List<Click> clicks=new ArrayList<Click>();  
 
      for(Click c: e.getClicks()){ 
 
     \t Click temp = new Click(); 
 
     \t temp.setAff_source(c.getAff_source()); 
 
     \t temp.setCb_to_award(c.getCb_to_award()); 
 
     \t temp.setCb_type(c.getCb_type()); 
 
     \t temp.setCom_to_recieve(c.getCom_to_recieve()); 
 
     \t temp.setStore_name(c.getStore_name()); 
 
     \t temp.setT_date(c.getT_date()); 
 
     \t temp.setT_status(c.getT_status()); 
 
     \t temp.setT_ticket(c.getT_ticket()); 
 
     \t temp.setUid(c.getUid()); 
 
     \t System.out.println(c.toString()); 
 
     \t clicks.add(temp);   \t 
 
      } 
 
      String json = gson.toJson(clicks, Click.class);

Click.java

@Entity 
 
@Table(name="click") 
 
public class Click { 
 
\t 
 
\t @Id 
 
\t @Column(name="t_ticket") 
 
\t private String t_ticket; 
 
\t 
 
\t @Column(name="uid",nullable=false) 
 
\t private long uid; 
 
\t 
 
\t public long getUid() { 
 
\t \t return uid; 
 
\t } 
 

 
\t public void setUid(long uid) { 
 
\t \t this.uid = uid; 
 
\t } 
 

 
\t @ManyToOne 
 
\t @JoinColumn(name="uid", 
 
\t \t \t \t insertable=false, updatable=false, 
 
\t \t \t \t nullable=false) 
 
\t private Earning earning; 
 
\t 
 
\t @Column(name="store_name") 
 
\t private String store_name; 
 
\t 
 
\t @Column(name="t_status") 
 
\t private String t_status; 
 
\t 
 
\t @Column(name="aff_source") 
 
\t private String aff_source; 
 
\t 
 
\t @Column(name="com_to_recieve") 
 
\t private float com_to_recieve; 
 
\t 
 
\t @Column(name="t_date") 
 
\t private Date t_date; 
 
\t 
 
\t @Column(name="cb_to_award") 
 
\t private float cb_to_award; 
 
\t 
 
\t @Column(name="cb_type") 
 
\t private String cb_type; 
 

 
\t public String getT_ticket() { 
 
\t \t return t_ticket; 
 
\t } 
 

 
\t public void setT_ticket(String t_ticket) { 
 
\t \t this.t_ticket = t_ticket; 
 
\t } 
 

 
\t 
 

 
\t public Earning getEarning() { 
 
\t \t return earning; 
 
\t } 
 

 
\t public void setEarning(Earning earning) { 
 
\t \t this.earning = earning; 
 
\t } 
 

 
\t public String getStore_name() { 
 
\t \t return store_name; 
 
\t } 
 

 
\t public void setStore_name(String store_name) { 
 
\t \t this.store_name = store_name; 
 
\t } 
 

 
\t public String getT_status() { 
 
\t \t return t_status; 
 
\t } 
 

 
\t public void setT_status(String t_status) { 
 
\t \t this.t_status = t_status; 
 
\t } 
 

 
\t public String getAff_source() { 
 
\t \t return aff_source; 
 
\t } 
 

 
\t public void setAff_source(String aff_source) { 
 
\t \t this.aff_source = aff_source; 
 
\t } 
 

 
\t public float getCom_to_recieve() { 
 
\t \t return com_to_recieve; 
 
\t } 
 

 
\t public void setCom_to_recieve(float com_to_recieve) { 
 
\t \t this.com_to_recieve = com_to_recieve; 
 
\t } 
 

 
\t public Date getT_date() { 
 
\t \t return t_date; 
 
\t } 
 

 
\t public void setT_date(Date t_date) { 
 
\t \t this.t_date = t_date; 
 
\t } 
 

 
\t public float getCb_to_award() { 
 
\t \t return cb_to_award; 
 
\t } 
 

 
\t public void setCb_to_award(float cb_to_award) { 
 
\t \t this.cb_to_award = cb_to_award; 
 
\t } 
 

 
\t public String getCb_type() { 
 
\t \t return cb_type; 
 
\t } 
 

 
\t public void setCb_type(String cb_type) { 
 
\t \t this.cb_type = cb_type; 
 
\t }

GSON 빌더.

+0

[SomeType @ 2f92e0f4 "을 가져 오지 않고 Java 객체를 인쇄하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/29140402/how-do-i-print-my-java-object- without-getting-sometype2f92e0f4) –

+0

@AlanHay 링크를 제공해 주셔서 감사합니다. –

+0

괜찮지 만 앱 로직에 대해 toString()에 의존하지 마십시오. Jackson과 같은 라이브러리를 사용하여 객체를 Json으로 쉽게 변환하고 그 반대의 경우도 마찬가지입니다. http://www.mkyong.com/java/jackson-2-convert-java-object-to-from-json/ –

답변

0

오케이, 나는 마침내 내 문제를 해결할 수 있습니다. 주석이없는 다른 POJO를 만들고 해당 POJO 클래스에 List 항목을 매핑했습니다. 원래 POJO에서 가지고 있던 다른 클래스의 매핑 주석에 문제가 있다고 생각합니다.

getString() 메소드는 식별자 형식을 변경하는 데 도움이됩니다. 그래서 기본적으로 getString()을 JSON 형식으로 형식화하지 않으면 JSON 구축과 관련이 없습니다.

희망이 있습니다. 누군가가 새로운 임시 직원 POJO를 원한다면 요청한 경우 게시 할 수 있습니다. 감사합니다. .

0

현재 Click 클래스에는 가능성이 없기 때문에 toString 메소드를 구현해야하므로 클래스 및 인스턴스 식별자의 이름으로 인쇄됩니다.

+0

답장을 보내 주셔서 감사합니다. toString 메서드를 사용하면 개체 식별자의 형식을 변경할 수 있습니까? GSON을 사용하여 json을 구축하고 있습니다. 다른 목록에 올바른 JSON 배열 (키 값 쌍)을 반환하지만 매핑 된 목록에 대해 "[[email protected]]"을 반환합니다. –

+0

toString은 식별자 형식을 변경하는 것이지만 JSON 구축에는 영향을 미치지 않습니다. –

+0

출력 내용이 변경됩니다. toString 메서드에서 JSON 작성기를 사용하여 toString이 호출 될 때 개체를 JSON String으로 변환 할 수 있습니다. –