2011-10-28 44 views
7

Tôi đang cố chèn một mảng vào bảng, nhưng tôi cần phải chuyển đổi danh sách thành kiểu mảng SQL. Tôi đang sử dụng phương pháp Connection#createArrayOf(), nhưng tôi nhận được một ngoại lệ.Cách tạo một mảng SQL từ một Danh sách Java?

Tôi cần phải chuyển tên loại, nhưng tôi không biết điều này là gì và tôi luôn nhận được ngoại lệ. Mảng này là từ VARCHAR.

Tôi giải quyết điều này như thế nào để chèn mảng?

Object[] array = new Object[token.getCategories().size()]; 
array = token.getCategories().toArray(); 
pstmTokenInsert.setArray(1, conn.createArrayOf("VARCHAR", array)); 

Các stacktrace

org.postgresql.util.PSQLException: Could not find array type for data type VARCHAR 
at org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf(AbstractJdbc4Connection.java:73) 
at org.postgresql.jdbc4.Jdbc4Connection.createArrayOf(Jdbc4Connection.java:21) 
at org.apache.commons.dbcp.DelegatingConnection.createArrayOf(DelegatingConnection.java:560) 
at br.ifsp.da.data.TokenDAO.insertTokens(TokenDAO.java:37) 
at br.ifsp.da.data.ProcessedPageInserter.loopInsertion(ProcessedPageInserter.java:44) 
at br.ifsp.da.data.ProcessedPageInserter.call(ProcessedPageInserter.java:27) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
at java.lang.Thread.run(Thread.java:722) 
+0

Bạn đang sử dụng Oracle? Loại mảng SQL rất phụ thuộc vào cơ sở dữ liệu nằm bên dưới. – ManuPK

+1

Bạn có thể đăng stacktrace của ngoại lệ không? :) –

+0

@ManuPK PostgreSQL –

Trả lời

18
+0

Cảm ơn bạn, tổng thể. Giúp tôi rất nhiều. Là một sai lầm đơn giản (mất một vài giờ), nhưng tôi không tìm thấy thông tin này ở bất cứ đâu. Cảm ơn. –

+2

khi tôi thay đổi thành 'varchar' tôi gặp phải lỗi này. org.postgresql.util.PSQLException: ERROR: toán tử không tồn tại: ký tự thay đổi = ký tự thay đổi [] Gợi ý: Không có toán tử nào khớp với tên và kiểu đối số đã cho. Bạn có thể cần thêm các loại phôi rõ ràng –

+0

@Damith Bạn có thể sử dụng toán tử = ANY thay vì IN – JuliuszJ

Các vấn đề liên quan